欢迎阅读 《深入浅出 ES6》!
这个系列的文章,由 Jason Orendorff 发表于 hacks.moziila.org,InfoQ 有个专栏翻译了这系列文章:深入浅出 ES6。但是由于文章不全、InfoQ 的排版等问题,遂在此做一遍翻译。
ECMAScript 6(亦称 ES2015,以下简称 ES6)是2015年6月份定稿的第六版 JavaScript 语言规范。ES6 包含了很多新的让 JavaScript 更为强大、生动的语言特性。
在探索这些特性之前,先来了解以下什么是 ES6、ES6 能带给你什么吧。
ECMAScript 包含了什么
ECMA (一个类似 W3C 的标准化组织) 是 JavaScript 语言的标准化组织。JavaScript 正是基于 ECMAScript 标准的实现。ECMAScript 定义了:
- 语法 - 解析规则、关键词、语句、声明、操作符等。
- 类型 - boolean, number, string, object 等。
- 原型与继承
- 内建对象和函数的标准库 - JSON, Math, 数组方法以及对象的自省方法等。
ECMScript 并没有定义任何与 HTML,CSS 或者 Web APIs 相关的内容,例如 DOM (Document Object Model)。这些内容都由其他独立的规范定义。ECMAScript 囊括了 JavaScript 语言的所有方面,不仅仅局限于浏览器,也包含了非浏览器环境,例如 Node.js。
新标准
ES6 是对语言的一次重大升级。同时,现有的 JavaScript 代码仍能继续运行。ES6 在设计的时候就保证了与现有代码的最大兼容性。事实上,很多浏览器已经支持了一些 ES6的特性,并不断努力实现剩余的部分。这就意味着包含 ES6 特性的 JavaScript 代码已经可以在这些实现了 ES6 特性的浏览器中运行了!如果你到现在还没有任何兼容性问题,那么你可能永远不会遇到了。
ES6
前几个 ECMAScript 标准的版本号分别为1,2,3和5。
第四个版本怎么了?其实 ECMAScript 的第四版曾在标准会的计划中 -- 而且实际上已经对其做了大量的工作 -- 但是最终因为过于激进而被废弃。(例如,这一版本的标准有过一个极其庞大的带有泛型和类型推断的静态类型系统。)
ES4 是饱受争议的。当标准委员会最终停止对其的修订工作之后,委员会成员一致同意发布一个相对适中的 ES5,而后继续制定一些更为重要的新特性。这一明确的协商决定被称之为“Harmony” 这也是为什么 ES5 的规范中包含了如下两句话:
ECMAScript 是一门充满活力的语言,而且语言的仍处于进化的过程中。一些显著的技术改进将会在之后的标准中继续制定。
这两句话像极了对 ECMAScript 的未来所许下的承诺。
实现承诺
2009年发布的 ES5 规范包含了 Object.create()
, Object.defineProperty()
, getters 和 setters,严格模式(strict mode)以及 JSON
对象。我已经用过了所有这些特性,并十分喜欢 ES5 对这门语言做出的一些改进。但是这些特性并没有对我编写 JavaScript 代码的方式做出了特别大的改变。对我而言,最大的革新就是新的数组方法:.map()
, .filter()
等。
但是 ES6 与之不同。他是多年来协调工作的成果。对这门语言和库的特性而言更是无价的宝藏,是有史以来对 JavaScript 语言最大的升级。新的特性小到一些语法糖,例如箭头函数(arrow function)和简单的字符串插值(string interpolation);大到类似代理(proxies)和生成器(generators)的概念。
ES6 会改变你编写 JavaScript 代码的方式。
这个系列的文章的目的是让 JavaScript 程序员学会如何考量新的 ES6 的特性。
我们将会从一个我期待了十余年的“遗失的特性”说起。所以,下一篇将会是关于 ES6 的迭代器和新的for-of
循环的文章。
这个系列的译文与原文一致遵守CC BY-SA 3.0 协议。