欢迎使用JavaScript 2.0

JavaScript 在 Web 领域占据主导地位,而作为其核心语言的 ECMAScript 也日趋成熟。预计将于年中发布的新规范(ES6 或 JS2)带来了诸多创新,其中一些已经可以进行测试。Firefox 目前提供了最佳支持,但也可以通过Google Traceur等转译器实现 polyfill。以下是对 ES6 新特性的简要概述。


新的关键字let在很多方面都比var做得更好:作用域现在的行为与其他语言(C/C++、Java)中的行为完全一样,这就是为什么 if 块现在也有自己的作用域。提升,即相应范围内变量声明(而不是赋值)的优先级也将得到修复:

console.log(x);
var x = 'foo'; 
// undefined

console.log(y);
let y = 'bar';
// not initialized

其他创新的数量很多:常量(const)、函数的默认值(function pow(a,b=2) { return Math.pow(a,b); })、函数的新表示法(let pow = (a,b=2) => Math.pow(a,b);)、各种新函数(repeat()、contains()、startsWith()、find()、findIndex())、新的循环构造为...的.

另外值得一提的是新的数据类型 Set、Map、Proxy 和 Symbol,通过 import 导入(其他部分)JavaScript 文件的能力以及类和继承的新直观语法。但通常也有一些小但期待已久的事情,比如字符串文字中换行的可能性(注意特殊的引号):

`foo

bar`

JavaScript 早已不再仅仅是用于网站小技巧的工具——它被用来创建功能强大、性能卓越的 Web 应用程序,其表现丝毫不逊色于桌面应用程序。凭借众多实用的新特性以及对 ES6 的现有支持,编程的乐趣倍增。

谁不总是希望借助新的常量Number.EPSILON来检查两个数字的相等性,该常量的值是1与下一个较高的浮点值之间的差?

let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;
背部