模板字符串
|
|
扩展运算符
|
|
Array.find
|
|
跨模块常量
|
|
|
|
解构赋值
如果解构不成功。变量的值就等于undefined
解构赋值允许指定默认值
注意:ES6内部使用严格相等运算符(===)判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined
,默认值是不会生效的。
|
|
如果将一个已经声明的变量用于解构赋值,必须非常小心
上面的代码写法会报错,因为js引擎会将{x}理解成一个代码块,从而发生语法错误,只有不将大括号写在行首,避免js将其解释为代码块,才能解决这个问题。
Array.prototype.includes
用于快速查找数组中是否包含某个元素。(包括NaN,所以和indexOf不一样)。
指数函数的中缀形式
可以使用 **
来替代 Math.pow
Object.values()
Object.values()
函数和 Object.keys()
很相似,它返回一个对象中自己属性的所有值(通过原型链继承的不算)。
Object.entries()
Object.entries()
和 Object.keys
相关,不过 entries()
函数会将key和value以数组的形式都返回。
字符串追加
提供了两个字符串追加的方法String.prototype.padStart
和String.prototype.padEnd
,方便我们将一个新的字符串追加到某个字符串的头尾。
'someString'.padStart(numberOfCharcters [,stringForPadding]);
|
|
|
|
Object.getOwnPropertyDescriptors
该函数返回一个对象所有的属性,甚至包括get/set
函数。
ES2017加入这个函数的主要动机在于方便将一个对象深度拷贝给另一个对象,同时可以将getter/setter
拷贝。
和Object.assign
不同,Object.assign
将一个对象除了getter/setter
以外的都深度拷贝了。
|
|
Async/Await
async
关键字告诉JavaScript编译器对于标定的函数要区别对待。当编译器遇到await
函数的时候会暂停。它会等到await
标定的函数返回的promise
。该promise
要么得到结果、要么reject
。
在下面的例子中,getAmount
函数调用getUser
和getBankBalance
两个异步函数。我们可以用promise
来实现它,不过用async await
更加简洁。
|
|
async函数返回Promise
如果你想获取一个async函数的结果,你需要使用Promise的then语法。
在下面的例子中,我们想用console.log来打印doubleAndAdd的结果,可以使用then语法,将console.log函数作为参数传入。
并行处理
在上面的例子中,我们显示地调用了await两次,因为每次都等待了1秒钟,因此总计两秒钟。现在,我们可以使用Promise.all函数来让他们并行处理。
|
|