首页 » 学习JavaScript数据结构与算法(第2版) » 学习JavaScript数据结构与算法(第2版)全文在线阅读

《学习JavaScript数据结构与算法(第2版)》1.8 ECMAScript概述

关灯直达底部

如果你关注JavaScript的新闻和最新趋势,肯定听说过被热炒的ECMAScript 6和ECMAScript 7。ECMAScript跟JavaScript有什么关系,又有什么不同?

ECMAScript是一种脚本语言规范。JavaScript是这个规范的一个实现,Jscript和ActionScript也是如此。

ECMAScript 6和ECMAScript 7

我们知道,JavaScript是一种主要在浏览器中运行的语言(也可以运行于NodeJS服务端),每个浏览器都可以实现自己版本的JavaScript功能(稍后你将在本书中学习)。这个具体的实现是基于ECMAScript的。因此,浏览器提供的功能大都相同(我们的JavaScript代码可以在所有浏览器中运行);然而,在不同的浏览器中,每个功能的行为也会存在细微的差别。

目前为止,本章给出的所有代码都是基于2009年12月发布的ECMAScript 5。编写本书时,ECMAScript的最新版本是2015年7月标准化的ECMAScript 6,与上一个版本时隔近六年。负责起草ECMAScript规范的委员会决定把定义新标准的模式改为每年更新一次,新的特性一旦通过就将加入标准。因此,ECMAScript第六版更名为ECMAScript 2015(ES6)。还有一个准备在2016年夏天发布的新版本,称为ECMAScript 2016或ECMAScript 7(ES7)。

本节,我们会学习ES6和ES7中引入的一些新功能。

兼容性列表

一定要明白,即便ES6已经发布,也不是所有的浏览器都完全支持新特性。为了更好的体验,最好使用你选择的浏览器(Firefox或Chrome)的最新版本。

通过以下链接,你可以检查在各个浏览器中哪些特性可用。

  • ES6:http://kangax.github.io/compat-table/es6/

  • ES7:http://kangax.github.io/compat-table/es7/

即使有些特性尚未支持,我们也可以现在就开始用新语法和新功能。

对于开发团队交付的ES6和ES7功能实现,Firefox默认开启支持。

在谷歌Chrome浏览器中,你可以如下图所示,访问chrome://flags,开启实验性JavaScript标志,启用新功能:

 即使开启了谷歌Chrome浏览器的实验性JavaScript标志,ES6的部分特性也可能不支持,Firefox同样如此。要了解各个浏览器所支持的特性,请查看兼容性列表。

  • 使用Babel.js

    Babel(https://babeljs.io)是一个JavaScript转译器,也称为源代码编译器。它将使用了ES6和ES7语言特性的JavaScript代码转换成只使用广泛支持的ES5特性的等价代码。

    使用Babel.js的方式多种多样。其中之一是根据设置文档(https://babeljs.io/docs/setup/)进行安装。另一种方式是直接在浏览器中试用(https://babeljs.io/repl/),如下面的屏幕截图所示。

    针对后续章节中出现的所有ES6和ES7的例子,我们都将提供一个在Babel中运行和测试的链接。