ES新特性

以下是 ES5(2009年)之后各个版本(ES6/ES2015 到 ES2023)的核心特性总结,按分类和版本组织,帮助快速掌握现代 JavaScript 的核心能力:


📌 ES6/ES2015(重大更新)

  1. 变量声明
    • let/const:块级作用域,解决 var 的变量提升问题。
  2. 箭头函数
    • () => {}:简写函数、自动绑定 this(词法作用域)。
  3. 模板字符串
    • `${变量}`:支持多行文本和插值。
  4. 解构赋值
    • const { name, age } = obj; 
      const [a, b] = array;
      
  5. 模块化
    • import/export:浏览器和 Node.js 原生支持的模块系统。
  6. 类(Class)
    • class Foo extends Bar {}:语法糖,本质基于原型链。
  7. Promise
    • 解决回调地狱,链式调用 .then().catch()
  8. 增强的对象字面量
    • 简写属性、方法:{ name, sayHi() {} }
  9. Symbol
    • 唯一值类型,用于定义对象唯一属性键。
  10. 默认参数
    • function(a = 1, b = 2) {}

📌 ES2016(ES7)

  1. 指数运算符 **
    • 2 ** 3 => 8(替代 Math.pow(2,3))。
  2. 数组方法 Array.prototype.includes()
    • [1,2].includes(1) => true(替代 indexOf 检查存在性)。

📌 ES2017(ES8)

  1. async/await
    • 用同步语法写异步代码,配合 Promise 使用。
  2. Object.values()/Object.entries()
    • Object.values(obj) 返回属性值数组。
    • Object.entries(obj) 返回键值对数组。
  3. 字符串填充
    • 'hi'.padStart(4, ' ') => ' hi'
  4. 共享内存与原子操作
    • SharedArrayBufferAtomics(高级并行编程)。

📌 ES2018(ES9)

  1. 对象展开运算符
    • const newObj = { ...obj, key: 'val' }
  2. Promise.finally()
    • 无论成功失败都执行的逻辑。
  3. 正则表达式增强
    • 命名捕获组:(?<name>pattern)
    • 反向断言:(?<=...)(?<!...)

📌 ES2019(ES10)

  1. 数组方法 flat()/flatMap()
    • [1, [2]].flat() => [1, 2]
  2. Object.fromEntries()
    • 键值对数组转对象,Object.fromEntries([['a',1]]) => {a:1}
  3. trimStart()/trimEnd()
    • 清除字符串首尾空格。

📌 ES2020(ES11)

  1. 可选链操作符 ?.
    • obj?.a?.b 避免因中间值为 null/undefined 报错。
  2. 空值合并运算符 ??
    • const val = a ?? 'default'(仅在 anull/undefined 时生效)。
  3. 动态导入 import()
    • 按需异步加载模块:const module = await import('path')
  4. BigInt 类型
    • 支持超大整数:9007199254740991n
  5. 全局 globalThis
    • 统一浏览器和 Node.js 的全局对象引用。

📌 ES2021(ES12)

  1. 字符串方法 replaceAll()
    • 替换所有匹配项:str.replaceAll('a', 'b')
  2. 逻辑赋值运算符
    • a ||= b(等价于 a = a || b)。
  3. Promise.any()
    • 任意一个 Promise 成功即返回,全失败则抛出 AggregateError。

📌 ES2022(ES13)

  1. 顶层 await
    • 允许在模块顶层直接使用 await
  2. 类的私有字段/方法
    • # 定义私有成员:class Foo { #privateMethod() {} }
  3. 数组方法 at()
    • arr.at(-1) 支持负数索引获取元素。

📌 ES2023(ES14)

  1. 数组方法 findLast()/findLastIndex()
    • 从后向前查找数组元素。
  2. Hashbang 标准化
    • 支持文件顶部写 #!/usr/bin/env node

🔧 使用建议

  • 兼容性处理:通过 Babel 将新语法转译成 ES5,使用 core-js 提供 polyfill。
  • 渐进增强:优先使用新特性提升代码可读性,但注意团队技术栈一致性。
posted @   木燃不歇  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示