ECMAScript 版本差异

ECMAScript(ES) 是 Javascript 语言规范,由欧洲计算机制造协会(ECMA - European Computer Manufacturers Association) 制定。


版本命名规则:

  • ES5 代表第 5 个 ES 版本,从 ES2015 开始直接按年份作为版本号
  • ES.Next 不代表任何的具体版本,仅用来指代下一个 ECMAScript 版本

ES1-ES4

传统版本

ES5 (2009)

  • 增加 strict mode
  • JSON 静态方法 JSON.parse(), JSON.stringify()
  • String.trim()
  • 扩充 Arrary 方法 isArray(), forEach(), map(), filter(), reduce(), reduceRight(), every(), some(), indexOf(), lastIndexOf()
  • Date.now()
  • Getter/Setter 属性
  • 定义对象或数组时允许最后一个元素结尾带逗号

ES2015 (ES6)

  • 声明变量 let、常量 const
  • 箭头函数 const sum = (a, b) => a + b
  • 函数默认参数 const sum = (a, b = 1) => { return a + b; }
  • class 声明类 class Person { constructor(name) { this.name = name } }
  • 扩充 Arrary 方法 find(), findIndex()
  • 模板字符串 `Hello ${name}`
  • 数组和对象 const {name, age} = person; const [a, b] = arr;
  • 模块 import/export export default class Person { ... } import Person from './person'
  • 异步函数返回对象 Promise return new Promise((resolve, reject) => { resolve(true) })
  • 展开操作符与其余参数 const [a, ...rest] = arr; const f = (..args) => {}

ES2016 (ES7)

  • 指数操作符 **
  • 扩充 Arrary 方法 Array.includes()

ES2017 (ES8)

  • 异步函数 async/await
  • 共享内存与原子操作
  • 扩充 String 填充方法 padStart(), padEnd()
  • 扩充 Object 方法 values(), entries(), getOwnPropertyDescriptors()

ES2018 (ES9)

  • 异步迭代
  • Rest/Spread 属性 const {name, ...rest} = person;
  • 扩充正则方法 :
    • 命名捕获组
    • Unicode Property Escapes
    • Lookbehind Assertions
    • /s(dotAll) flag

你可能感兴趣的:(ECMAScript 版本差异)