2. 常见问题解答:ECMAScript 6
目录
请支持本书:购买 (PDF, EPUB, MOBI)捐赠
(广告,请不要屏蔽。)

2. 常见问题解答:ECMAScript 6

本章回答一些关于 ECMAScript 6 的常见问题。



2.1 我如何才能在今天使用 ES6?

当前的引擎已经支持了大部分 ES6 特性,请查阅 Kangax 的 ES6 兼容性表 以了解哪些特性在哪些环境下受支持。

有关其他选项(例如,交互式 ES6 命令行以及通过 Babel 将 ES6 转译为 ES5),请参阅“设置 ES6”中的“部署 ECMAScript 6”一章。

2.2 ECMAScript 6 现在不是叫做 ECMAScript 2015 吗?

是也不是。官方名称是 ECMAScript 2015,但 ES6 是每个人都知道和使用的名称。这就是为什么我决定在这本书中使用后者。

在 ES6 之后,ECMAScript 版本将通过 一个新的流程 和年度发布周期创建。这似乎是切换到新命名方案的好机会。因此,我将使用“ECMAScript 2016”作为 ES6 之后版本的名称。

2.3 如何将我的 ECMAScript 5 代码迁移到 ECMAScript 6?

什么都不需要做:ECMAScript 6 是 ECMAScript 5 的超集。因此,您所有的 ES5 代码自动就是 ES6 代码。这对于逐步采用这个新版本有很大帮助。ES6 如何保持完全向后兼容性在 关于“一个 JavaScript”的章节 中有解释。

2.4 学习 ECMAScript 5 还有意义吗?

ES6 在各个地方的支持度越来越高。这是否意味着您不应该再学习 ECMAScript 5 了?不,这有几个原因

2.5 ES6 是否过于臃肿?

偶尔会有人指责 ES6 过于臃肿,引入了太多无用的*语法糖*(对已经存在的东西提供了更方便的语法)。

然而,在许多方面,JavaScript 只是现在才赶上了 Python 和 Ruby 等语言。这两种语言仍然有更多的特性,并带有更丰富的标准库。

如果有人抱怨 ES6 太大,我建议他们尝试使用一段时间。没有人强迫您使用任何新特性。您可以从小处着手(请参阅“核心 ES6 特性”一章获取建议),然后随着您对 ES6 越来越熟悉,再使用更多的新特性。到目前为止,我从真正使用过 ES6(而不是仅仅阅读过它)的人那里得到的反馈是非常积极的。

此外,表面上看起来像语法糖的东西(例如类和模块)为该语言带来了急需的标准化,并为未来的特性奠定了基础。

最后,有几个特性不是为普通程序员创建的,而是为库作者创建的(例如,生成器、迭代器、代理)。“普通程序员”只需要粗略地了解它们,甚至根本不需要了解。

2.6 ES6 规范是不是很大?

ECMAScript 规范确实增长了很多:ECMAScript 5.1 PDF 有 245 页,ES6 PDF 有 593 页。但是,相比之下,Java 8 语言规范有 724 页(不包括索引)。此外,ES6 规范包含了许多其他语言规范省略为实现定义的细节。它还指定了其标准库的工作方式2

2.7 ES6 有数组推导式吗?

最初,ES6 将拥有数组和生成器推导式(类似于 Haskell 和 Python)。但它们没有被添加,因为 TC39 希望探索两条途径

2.8 ES6 是静态类型的吗?

静态类型不是 ES6 的一部分。但是,以下两种技术为 JavaScript 添加了静态类型。类似的特性最终可能会被标准化。

静态类型的两个好处是

TypeScript 和 Flow 都使用相同的符号。类型注释是可选的,这使得这种方法相对轻量级。即使没有注释,类型也常常可以被推断出来。因此,这种类型的检查即使对于完全没有注释的代码也是有用的,可以作为一致性检查。

下一页:3. 一个 JavaScript:在 ECMAScript 6 中避免版本控制