Harmony/ES6 的原始项目有几个目标。在下面的子节里,我会讲解其中一些目标。
目标是:成为一门对编写如下程序更友好的语言:
- 1、复杂的应用;
- 2、应用之间共享的库(可能包含 DOM 操作);
- 3、针对新版本的代码生成器。
子目标(1)承认了用 JavaScript 开发的应用已经变得很大了。达成这个目标的关键 ES6 特性就是内置模块。
模块也是目标(2)的解决方案。说句题外话,在 JavaScript 里实现 DOM 是出了名的困难。 ES6 的 Proxy 应该会有所帮助(这会在单独的一章中讲解)。
特意添加了几个特性,这些特性不是为了提升 JavaScript ,而是使其它语言更容易编译成 JavaScript 。举两个例子:
- Math.fround() - 舍入为32位的浮点数
- Math.imul() - 两个32位整数相乘
它们对于将其它语言(例如 C/C++ 通过 Emscripten 编译)编译成 JavaScript 是很有用的。
目标是:提升互操作性,尽可能采用事实上的标准。
四个例子:
- 类:基于现今构造器的使用方式。
- 模块:从 CommonJS 模块格式中提取设计思想。
- 箭头函数:从 CoffeeScript 中借用过来的语法。
- 命名函数参数:对于命名参数,没有内置的支持。但是,可以通过对象字面量结合参数定义的解构来实现命名参数。
目标是:尽量使版本控制简单并且线性的。
正如前面提到的, ES6 避免“ One JavaScript ”式的版本管理:在一个 ES6 的代码库里,所有代码都是 ES6 的,没有任何一部分是 ES6 特有的。