1.4 升级到 ES6
web 的参与者包含:
- JavaScript 引擎的实现者
- web 应用的开发者
- 用户
这三种角色相互之间的约束控制很小。这就是为什么升级 web 语言很有挑战性。
一方面,升级引擎很有挑战,因为要应对运行于 web 的各种各样的代码,某些时候是很老的代码。你也希望引擎自动升级,尽量让用户感知不到。因此, ES6 是 ES5 的超集,没有移除任何东西。 ES6 升级了语言,但是并没有引入新的版本或者模式。它甚至使严格模式成为默认的执行模式(通过模块),而没有增加与非严格模式差异。采用的手法被称为“ One JavaScript ”,会在单独的一章里面讲解。
另一方面,升级代码具有挑战性,因为你的代码必须能在目标用户使用的各种各样的 JavaScript 引擎上面运行。因此,如果你想在你的代码中使用 ES6 ,仅有两个选择:等到目标用户不再使用非 ES6 的引擎,这将会等好几年;当 ES6 在2015年6月成为标准的事后,主流用户使用的引擎都支持 ES5 了(然而 ES5 早在2009年12月就成为标准了),因此可以将 ES6 代码编译成 ES5 代码,现在就用起来(关于怎么做,会在单独的一章中讲解)。
目标和需求在 ES6 的设计中产生了冲突:
- 目标是修复 JavaScript 的陷阱,并且添加新的特性。
- 需求是既要让老代码能够运行,又要保持语言的轻量性。