复习:ES6~ES12的一些新特性归纳(ES7、ES8)
2021-11-21 本文已影响0人
听书先生
ES7相关的新特性(2016)
-
Array.prototype.includes():
用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。
console.log([1,2,3,4,5].includes(2))
-
指数操作符:
在ES7中引入了指数运算符** ,**具有与Math.pow(..)等效的计算结果。
console.log(2**3); // 8
自己封装方法去计算的话
function calc(count, index){
if(index== 1){
return count;
}
else{
return count*calc(count, index- 1);
}
}
ES8相关的新特性(2017)
-
async/await:
放在函数的前面,表示该函数是一个异步函数,函数的执行不会阻塞后面代码的执行,await用于等待一个Promise对象。它只能在异步函数 async函数中使用,返回的是一个Promise对象处理之后的结果。
async function demo(flag){
if(flag){
return "执行异步";
}else{
throw new Error("抛出异常");
}
}
-
Object.values():
返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in
循环的顺序相同
var obj = { name: 'zhangsan', age: 20 };
console.log(Object.values(obj))

-
Object.entries():
返回一个给定对象自身可枚举属性的键值对数组,其排列与使用for...in
循环遍历该对象时返回的顺序一致
var obj = { name: 'zhangsan', age: 20 };
for(const [key,value] of Object.entries(obj)) {
console.log(`${key}:${value}`);
}

- String Padding字符串空格:
PadStart:左侧填充字符串
第一个参数是目标长度,要输出的位数
第二个参数是占位内容,默认是空格
PadEnd:右侧填充字符串
第一个参数是目标长度,要输出的位数
第二个参数是占位内容,默认是空格
let str = 'dsfadas'
console.log(str.padStart(9,0)); // "00dsfadas"
console.log(str.padEnd(9,0)); // "dsfadas00"
- 函数参数列表允许尾部逗号:
function foo(
param1,
param2,
) {}
-
Object.getOwnPropertyDescriptors():
获取一个对象的所有自身属性的描述符,如果没有任何自身的属性,那么返回空对象。
这个方法主要是为了解决Object.assign()无法正确拷贝get属性和set属性的问题。
let obj = {
name:'zhangsan',
foo(){
console.log('foo()')
}
}
console.log(
Object.getOwnPropertyDescriptors(obj))
-
SharedArrayBuffer对象:
SharedArrayBuffer对象用来表示一个通用的,固定长度的原始二进制数据缓存区。
const buffer = new SharedArrayBuffer(8);
console.log(buffer.byteLength);
-
Atomics对象:
Atomics对象提供了一组静态方法用来对SharedArrayBuffer进行操作