ES6-ECMAScript特性汇总
# # ES6-ECMAScript特性汇总
ES6+不仅给javascript语言带来质的飞跃,也在语法层面对开发人员友好了很多,js代码可以写的简洁与工整。这里也推荐大家看笔者整理的AI Javascript风格指南 (opens new window) (opens new window),有很多较长ES5代码转为简洁ES6+的例子。以下汇总ES6+新增的特性,帮助大家更好的在实际编码过程中,应用上这些特性。从tc39/proposals (opens new window) (opens new window)可以看到Javascript 发展委员会TC39已经纳入标准的提案。
# # ES6
详见笔者另外一篇文章:ES6-新增特性一览 (opens new window) (opens new window)
# # ES7
- Array.prototype.includes()
- 求幂运算符(**)
[1,2].indexOf(3) // false
Math.pow(4,2)== 4 ** 2
1
2
3
2
3
# # ES8
- 字符串填充(padStart 和 padEnd)
- Object.values()
- Object.entries()
- Object.getOwnPropertyDescriptors()
- 函数参数列表和调用中的尾随逗号
- Async Functions async/await(异步函数)
- 共享内存 和 Atomics
'test'.padEnd(8, 'abcd') // 'testabcd'
// Object.values()适用对象和数组
Object.values({ name: 'Fred', age: 87 }) // ['Fred', 87]
Object.values(['Fred', 'Tony']) // ['Fred', 'Tony']
// Object.entries()适用对象和数组
Object.entries({ name: 'Fred', age: 87 }) // [['name', 'Fred'], ['age', 87]]
Object.entries(['Fred', 'Tony']) // [['0', 'Fred'], ['1', 'Tony']]
async function doSomething() {
console.log(await doSomethingAsync())
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# # ES9
- 对象的Rest(剩余)/Spread(展开) 属性
- Asynchronous iteration for-await-of(异步迭代)
- Promise.prototype.finally()
- 正则表达式改进
- 先行断言(lookahead) 和 后行断言(lookbehind)
- Unicode 属性转义 \p{…} 和 \P{…}
- 命名捕获组(Named capturing groups)
- 正则表达式的 ‘s’ 标志
[first, second, ...others] = [1, 2, 3, 4, 5] // ES6开始支持数组rest
const { first, second, ...others } = { first: 1, second: 2, third: 3, fourth: 4, fifth: 5 } // ES9支持对象rest
// 异步迭代
for await (const data of readFile(filePath)) {
console.log(data)
}
// 无论成功还是失败,都会执行finally
fetch('file.json')
.then(data => data.json())
.catch(error => console.error(error))
.finally(() => console.log('finished'))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
持续更新...
# # 参考文章
编辑 (opens new window)