ECMAScript 2017(ES8)

2025-02-20 20:00
2025-02-22 08:10
525

核心特性

1. async / await

引入了 asyncawait 关键字,基于 Promise 的语法糖,以同步方式编写异步代码,彻底解决回调地狱问题。

javascript
      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() 返回一个数组,包含对象自身可枚举属性的键值对数组。
javascript
      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):在字符串的结尾填充指定的字符,直到字符串的总长度达到目标长度。
javascript
      console.log("5".padStart(3, "0")); // "005"
console.log("Hi".padEnd(5, "!")); // "Hi!!!"

    

4. SharedArrayBuffer 和 Atomics

SharedArrayBufferAtomics,共享内存与原子操作,支持多线程间共享内存,通过原子操作避免竞态条件。常用于高性能计算(如 Web Worker 场景)

  • SharedArrayBuffer:提供一种在多个线程间共享内存的方式。
  • Atomics:提供原子操作,用于安全地访问共享内存中的数据。
javascript
      const buffer = new SharedArrayBuffer(16);
const view = new Int32Array(buffer);
Atomics.add(view, 0, 1); // 原子操作:安全修改共享内存
console.log(Atomics.load(view, 0)); // 输出:1

    
  1. 函数参数列表和对象字面量的末尾逗号

允许在函数参数列表和对象属性末尾添加逗号,减少版本控制冲突。

javascript
      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
总结