ECMAScript 2017(ES8)
2025-02-20 20:00
2025-02-22 08:10
核心特性
1. async / await
引入了 async
和 await
关键字,基于 Promise 的语法糖,以同步方式编写异步代码,彻底解决回调地狱问题。
async function fetchData() {
try {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
console.log(data);
} catch (error) {
console.error("Fetch failed:", error);
}
}
2.Object.entries() 和 Object.values()
补充了 Object.values()
和 Object.entries()
方法,使得对对象的操作更加便捷。
Object.values()
返回一个数组,包含对象自身可枚举属性的值。Object.entries()
返回一个数组,包含对象自身可枚举属性的键值对数组。
const obj = { name: "xlei", age: 25 };
console.log(Object.values(obj)); //输出:["xlei",25]
console.log(Object.entries(obj)); //输出:[["name","xlei"],["age",25]]
3. padStart() 和 padEnd()
加入了字符串填充方法:padStart()
和 padEnd()
方法,常用于格式化输出(如时间、数字对齐,补零)
padStart(targetLength, padString)
:在字符串开头或结尾填充指定字符,直到达到目标长度padEnd(targetLength, padString)
:在字符串的结尾填充指定的字符,直到字符串的总长度达到目标长度。
console.log("5".padStart(3, "0")); // "005"
console.log("Hi".padEnd(5, "!")); // "Hi!!!"
4. SharedArrayBuffer 和 Atomics
SharedArrayBuffer
和 Atomics
,共享内存与原子操作,支持多线程间共享内存,通过原子操作避免竞态条件。常用于高性能计算(如 Web Worker 场景)
SharedArrayBuffer
:提供一种在多个线程间共享内存
的方式。Atomics
:提供原子操作,用于安全地访问共享内存
中的数据。
const buffer = new SharedArrayBuffer(16);
const view = new Int32Array(buffer);
Atomics.add(view, 0, 1); // 原子操作:安全修改共享内存
console.log(Atomics.load(view, 0)); // 输出:1
- 函数参数列表和对象字面量的末尾逗号
允许在函数参数列表和对象属性末尾添加逗号,减少版本控制冲突。
function foo(a, b) {} // 合法
const obj = { x: 1, y: 2 }; // 合法
总结
ECMAScript 2017(ES8)通过 async/await 彻底革新了 JavaScript 的异步编程范式,同时提供了更强大的对象操作和字符串处理工具。其特性广泛应用于现代前端框架(如 React、Vue 的异步逻辑)、Node.js 服务端开发及数据密集型任务,标志着 JavaScript 向更高效、更易维护的方向演进。后续版本(如 ES2018 的 Rest/Spread 属性)进一步扩展了语言的表现力。
评论区
评论区寄了
文章目录
核心特性
1. async / await
2.Object.entries() 和 Object.values()
3. padStart() 和 padEnd()
4. SharedArrayBuffer 和 Atomics
总结