13

我一直在阅读 Mozilla 对 JavaScript 的持续开发,一直到 1.8.5 版:https ://developer.mozilla.org/en/JavaScript 。

我的问题是:就语言特性而言,JavaScript 1.8.5+ 和 ECMAScript 5+ 之间有什么相关性?Mozilla 的新 JavaScript 功能(如生成器、数组解析等)是否有可能成为 ECMAScript 的一部分?

我只想了解是否值得学习 JavaScript 1.8.5 功能(并努力将它们填充到不支持的浏览器中),或者我是否应该忘记 JS 1.8.5 并专注于学习/填充新的 ECMAScript 5 功能。

仅供参考:Mozilla 在这里谈论他们计划如何使 JavaScript 符合 ECMAScript 5:https ://developer.mozilla.org/En/JavaScript/ECMAScript_5_support_in_Mozilla

4

3 回答 3

16

JavaScript 1.8.5 是 Mozilla 的 ECMAScript 实现,具有附加功能。它是 ECMAScript 规范(以及 IE、Chrome 和 Opera 等当前实现)的超集。Mozilla 推动它添加到自己的浏览器中的功能,它们可能会也可能不会进入 ECMA。请注意,Mozilla 是 W3C 的成员,并且有一些发言权,但我猜大多数功能不会成功。

底线不要使用它,除非您正在编写特定于 firefox、FF 扩展、XUL 应用程序、Rhino 的代码(感谢 @Raynos 添加了 Rhino)

于 2011-02-04T01:33:35.733 回答
3

绝对专注于 ES5。1.7 和 1.8 特性的问题在于它们改变了语言的语法,因此您无法将它们填充到其他代码中。

您可以使用 ES5 模拟 Object 的所有属性,但不能模拟let关键字。在其他浏览器中,各种表达式只是无效的 javascript。

您必须区分添加原生代码(大多数 ES5 正在做的事情)和更改 javascript 的语法(这是 1.7 和 1.8 所做的事情)。

1.7 和 1.8 有一个用途,它是为 RHINO 平台开发的。但对于浏览器 javascript 坚持规范。

不可否认,多值返回是一个非常简洁的功能。有这样的数组分配会很好

function() f {
     return [1,2,3];
}

[a,b,c] = f()

但是其他功能是对语法的重大更改,您无法通过 ecmascript 推动它们,它们只是不会处理它。像上面这样的小改动你也许可以进入 ES6,但你至少要等一年。

所以实际上不要指望学习会在一两年内得到回报。很可能不会有回报。请查看诸如underscore.js之类的库,它们可以为您定义常用的实用工具方法。

于 2011-02-04T01:23:10.800 回答
1

我认为 ECMAScript 是“标准”,就像蓝图一样,而 javascript 是它所基于的实际语言。有点像 w3c 有自己的标准,然后人们根据它制作(或不制作)渲染引擎。

因此,基本上要回答您的问题,请查看 ECMAScript 以了解共识是什么,javascript“应该”如何工作,但您应该专注于 javascript,因为这就是您实际编码的内容。

于 2011-02-04T01:10:59.163 回答