ES6+不仅给javascript语言带来质的飞跃,也在语法层面对开发人员友好了很多,js代码可以写的简洁与工整。这里也推荐大家看笔者整理的AI Javascript风格指南 (opens new window),有很多较长ES5代码转为简洁ES6+的例子。以下汇总ES6+新增的特性,帮助大家更好的在实际编码过程中,应用上这些特性。从tc39/proposals (opens new window)可以看到Javascript 发展委员会TC39已经纳入标准的提案。
详见笔者另外一篇文章:ES6-新增特性一览 (opens new window)
[1,2].indexOf(3) // false
Math.pow(4,2)== 4 ** 2
'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())
}
[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'))
持续更新...