ES5、ES6、ES2015~ES2020的区别

4,284 阅读2分钟

《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文

基本概念

  • ECMAScript:是一种由 Ecma 国际(前身为欧洲计算机制造商协会)在标准 ECMA-262 中定义的脚本语言规范。这种语言在万维网上应用广泛,它往往被称为 JavaScript 或 JScript,但实际上后两者是 ECMA-262 标准的实现和扩展;
  • ES5:ECMAScript 的第 5 版,于 2009 年标准化,也泛指上一代语言标准(2015年以前发布的版本);
  • ES6:ECMAScript 的第 6 版,于 2015 年标准化,也泛指 5.1 版本(2011年发布)以后的 JavaScript 标准,目前涵盖了ES2015(ES6)、ES2016(ES7)、ES2017、ES2018、ES2019、ES2020;
  • ES2015:是指在 2015 年发布的 ECMAScript 第 6 版。

注:ES2015 可以理解为 ES5 和 ES6 的时间分界线。

版本变化

  • ES5,2009年发布,扩展了Object、Array、Function等的功能;
  • ES6,2015年发布,新增:类、模块化、箭头函数、函数参数默认值、模版字符串、解构赋值、延展操作符、对象属性简写(对象扩展,还有计算属性)、Promise、let、const(块级作用域)、新数据结构Set、Map、Symbol 等特性;
  • ES7,2016年发布,新增:Array.prototype.includes()、指数操作符;
  • ES8,2017年发布,新增:async/await、Object.values()、Object.entries()、String padding、函数参数列表结尾允许逗号、Object.getOwnPropertyDescriptors() 等。

ES6 相对于 ES5 的新增特性

  • 数据结构:Set、Map、Symbol;
  • 类和继承(class、extends);
  • 模块化,使用 export 导出、import 导入;
  • 箭头函数;
  • 模版字符串(如:let name = name is ${first} ${last});
  • 解构赋值;
  • 延展(展开)操作符和剩余语法;
  • 对象属性简写;
  • Promise;
  • let、const(块级作用域)。

参考资料