返回首页 深度解析 ECMAScript 6

简介

欢迎来到深度探索 ES6!在这个新的周系列里,我们将探索 ECMAScript 6。这是一种 JavaScript 语言即将到来的新版本。ES6 包含了很多新的语言功能,且这些语言功能使得 JS 更加强大更富有表现力。在接下来的几周时间里,我们将会一个一个地了解这些新功能。但是在我们了解细节的东西之前,我们值得花一点时间来讨论一下什么是 ES6 以及你期望能得到什么。

ECMAScript 的范围是什么?

JavaScript 编程语言是由 ECMAScript 名下的 ECMA 进行标准化制定的( ECMA 是和 W3C 一样的标准化组织 )。除此之外,ECMAScript 可如下定义:

  • 语法-解析规则,关键字,语句,声明,操作等等。
  • 类型-布尔型,数字,字符串,对象等等。
  • 原型和继承。
  • 内置对象和函数的标准库 - JSON ,数学( Math ), 数组方法( Array methods ),对象内省的方法( Object introspection methods )等等。

其没有定义与 HTML 、CSS 或者 Web API 交互的内容,比如 DOM ( 文档对象模型 )。那些都是在单独的标准中定义的。 ECMAScript 不仅在浏览器环境中的涵盖了 JS 的所有方面,其在非浏览器环境中也涵盖了 JS ,例如 node.js 。

新的标准

上周, ECMAScript 语言规范的最终草案,第 6 版,被提交给 ECMA 大会进行审查。这意味着什么呢?

这意味着这个夏天,对于核心的 JavaScript 编程语言,我们将有一个新的标准。

这是一个大新闻。新的 JS 语言不是每天都可能出现的。 上一个版本,ES5,可以追溯到 2009 年。从那时起,ES 标准委员会就一直致力于 ES6 的制定直至今日。

ES6 是语言的一次重大的升级。同时,你的 JS 代码也可以继续工作。ES6 被设计为可以最大程度兼容现有的代码。事实上,很多浏览器已经支持丰富的 ES6 的功能,同时实现工作也正在进行中。这就意味着你所有的 JS 代码已经可以在那些实现一些 ES6 功能的浏览器里面运行!如果你到现在还没有看到任何兼容性问题,你可能永远也不会碰到这些问题了。

计数到 6

ECMAScript 标准的先前的版本分别编号为 1,2,3 和 5。

第四版本发生了什么?第 4 版的 ECMAScript 曾是在计划之中的,并且事实上大量的工作也已经完成了。但由于它过于的繁琐,其最终被废弃了。 ( 例如,它在静态类型系统中对泛型和类型推断有一个复杂的选择。)

ES4 是有争议的。当标准委员会最终停止继续制定时,该委员会成员同意出版一个相对温和的 ES5 ,然后继续工作以制定更多的有较大幅度改进的新功能。这个直接通过谈判达成的协议被称为“和谐(Harmony)”,这也是为什么 ES5 规范包含这两句话:

ECMAScript 是一个充满活力的语言且其语言的演化还不完整。在未来的 ECMAScript 的版本中将有较大提升的技术的声明。

这种说法也可以被看作是委员会给出的一个承诺。

兑现承诺

ES5 在 2009 年对语言进行了更新,其介绍了 Object.create( ), Object.defineProperty( ), getter 和 setter 方法​​,strict 模式和 JSON 对象。我已经使用了所有的这些功能,而且我喜欢 ES5 对语言做出的贡献。但是, 这些功能中的任何一种都没有对我写 JS 代码的方式产生巨大的影响。对我来说其最重要的创新,很可能是新的数组方法:.MAP,filter 等等。

然而,ES6 是决然不同的。它是多年和谐工作的产物。 同时,它是新的语言和库功能的宝库,其是迄今为止 JS 的最实质性的升级。 其新功能涵盖面很广,从那些很受欢迎的能带来便利的功能(如箭头的功能和简单的字符串插值),到能带来头脑风暴的概念(如代理和生成器)。

ES6 将改变你写 JS 代码的方式。

本系列旨在向你展示 ES6 如何通过检查其新功能来给JavaScript程序员提供新的写代码体验。

我们将以一个典型的“功能缺失”作为开始。“功能缺失”是我在过去的十年的时间内一直渴望能从 JavaScript 那看到的。所以,让我们一起去探索 ES6 迭代器和新的 for-of 循环。

上一篇: 关于 下一篇: 迭代和 for-of 循...