ECMAScript是一种语言规范,创建它是为了标准化JavaScript。 ES脚本语言具有许多实现,流行的实现是JavaScript。
ECMAScript5,即 ES5,是 ECMAScript 的第五次修订,于 2009 年完成标准化 ECMAScript6,即 ES6,是 ECMAScript 的第六次修订,于 2015 年完成,也称 ES2015 ES6 是继 ES5 之后的一次改进,相对于 ES5 更加简洁,提高了开发效率.
到目前为止,还没有完全支持ES6功能的浏览器。 但是,我们可以使用转译将ES6代码转换为ES5代码。 有两个主要的编译器Babel和Traceur,用于在构建过程中将ES6代码转换为ES5代码。
ES6的新增内容
ECMAScript 6(通常称为 ES6 或 ES2015)引入了许多新功能和语法改进,相对于 ES5 带来了许多增强。以下是一些 ES6 相对于 ES5 的新增特性:
- 块级作用域:ES6引入了
let和const关键字,用于创建块级作用域,取代了ES5中只有函数作用域的var。
- 以{}代码块作为作用域范围 只能在代码块里面使用。
- 不存在变量提升,只能先声明再使用,否则会报错。
- 在代码块内,在声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone),简称 TDZ
-
箭头函数:箭头函数(Arrow functions)提供了更简洁的函数定义语法,特别适用于匿名函数和回调函数。
-
默认参数值:ES6 允许函数参数设置默认值,简化了函数调用时的参数传递。
-
模板字符串:模板字符串(Template literals)允许你创建多行字符串和插入变量,更易于处理字符串拼接。
- 用一对反引号``标识,它可以当作普通字符串使用,也可以用来定义多行字符串,也可以 在字符串中嵌入变量,js 表达式或函数,变量、js 表达式或函数需要写在${ }中。
-
解构赋值:解构赋值(Destructuring assignment)允许你从数组或对象中提取数据,将其分配给变量,更方便和紧凑。
-
类:ES6引入了类(Class),使面向对象编程更加直观和面向对象。
-
模块:ES6 引入了模块系统,允许将代码分割为多个文件,并使用
import和export来管理模块之间的依赖关系。 -
迭代器和生成器:ES6 引入了迭代器(Iterator)和生成器(Generator)以更容易地处理集合和异步编程。
-
Promise:Promise 是一种更好的处理异步操作的方式,解决了回调地狱问题。
-
Map 和 Set:ES6引入了新的数据结构Map和Set,提供更灵活和高效的数据存储和检索。
-
Symbol:ES6引入了Symbol数据类型,用于创建唯一的标识符,可以用于对象属性。
-
for...of 循环:新的
for...of循环允许迭代数组、字符串、Map、Set等可迭代对象,更易于遍历集合。 -
Proxy:Proxy 允许你拦截和自定义对象上的操作,如属性访问、修改等。
-
Rest 和 Spread 操作符:Rest操作符(
...rest)用于将多个参数合并成一个数组,而Spread操作符(...spread)用于展开数组或对象。