ES2017
ES2017 引入了前端异步编程的终极解决方案 async/await,以及多个对象和字符串的实用方法。
1. async/await
基于 Promise 的语法糖,允许用同步的方式编写异步代码,极大地提高了代码的可读性和错误处理的便利性(try/catch)。
async function fetchData() {
try {
const res = await fetch('/api/data');
const data = await res.json();
return data;
} catch (err) {
console.error(err);
}
}
2. Object.values() & Object.entries()
与 Object.keys() 配套,用于方便地遍历对象。
Object.values():返回对象自身可枚举属性值的数组。Object.entries():返回对象自身可枚举属性的键值对数组(常用于配合Map或for...of)。
const obj = { a: 1, b: 2 };
console.log(Object.values(obj)); // [1, 2]
console.log(Object.entries(obj)); // [['a', 1], ['b', 2]]
3. 字符串填充 (padStart & padEnd)
在字符串的开头或结尾填充指定的字符,直到字符串达到指定的长度。常用于日期时间格式化(补零)。
console.log('5'.padStart(2, '0')); // "05"
console.log('12'.padEnd(4, '-')); // "12--"
4. Object.getOwnPropertyDescriptors()
返回指定对象上一个自有属性对应的属性描述符(包含 value, writable, get, set 等)。常用于配合 Object.defineProperties() 进行对象的深拷贝(特别是带有 getter/setter 的对象)。
5. 函数参数允许尾逗号 (Trailing Commas)
在定义函数参数或调用函数时,最后一个参数后面允许加上逗号。这在多行参数排列时,对版本控制(Git Diff)更友好。
function sum(
a,
b, // 允许尾逗号
) {}
6. SharedArrayBuffer & Atomics
用于多线程(Web Workers)之间共享内存数据,Atomics 提供了一组原子操作,确保多线程并发读写时的安全性。