关于mozilla:在语言特性方面,ecmascript 5和javascript 1.8.5之间的关系是什么?

What is the correlation between ECMAScript 5 and JavaScript 1.8.5 in terms of language features?

我一直在阅读Mozilla在1.8.5版本中不断开发的javascript:https://developer.mozilla.org/en/javascript。

我的问题是:在语言特性方面,javascript1.8.5+和ECMAScript 5+之间的关系是什么?Mozilla的新JavaScript功能(如生成器、数组理解等)有可能成为EcmaScript的一部分吗?

我只想了解一下是否值得学习javascript1.8.5特性(并努力将它们填充到不支持的浏览器中),或者是否应该忘记JS 1.8.5并专注于学习/填充新的EcmaScript 5特性。

仅供参考:Mozilla讨论了他们计划如何使javascript符合EcmaScript 5的要求,这里是:https://developer.mozilla.org/en/javascript/ecmaScript_5_support_in_mozilla


javascript 1.8.5是Mozilla对EcmaScript的实现,添加了一些功能。它是ECMAScript规范的超集(以及当前实现的超集,如IE、Chrome和Opera)。Mozilla推动它添加到自己的浏览器中的功能,他们可能会或可能不会将其添加到ECMA中。请注意,Mozilla是W3C的成员,有一些说法,但我猜大多数功能都无法实现。

底线是不要使用它,除非你正在编码特定于火狐、FF扩展、XUL应用、Rhino的代码(由于@raynos增加了Rhino)


不屈不挠地专注于ES5。1.7&1.8特性的问题在于,它们会更改语言的语法,因此您不能将它们填充到其他代码中。

可以使用es5模拟对象的所有属性,但不能模拟let关键字。在其他浏览器中,各种表达式都不是有效的javascript。

您必须区分添加本机代码(这是ES5的主要功能)和更改JavaScript语法(这是1.7&1.8的功能)之间的区别。

1.7和1.8有一个用途,用于为Rhino平台开发。但对于浏览器来说,javascript必须遵循规范。

诚然,多值返回是一个非常好的特性。有这样的数组分配就好了

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

[a,b,c] = f()

但其他特性是语法的重大变化,您不能通过ecmascript来推动它们,它们只是无法处理它。像上面这样的小变化,你可能能够进入ES6,但你必须至少等待一年。

所以,现实地说,不要指望学习一年或两年后会有回报。很可能不会有回报。一定要看一些库,如underline.js,它们可以为您定义通用的函数实用程序方法。


我认为EcmaScript是"标准",就像一个蓝图,而javascript是它所基于的实际语言。有点像W3C有他们的标准,然后人们(或不)基于它来制造渲染引擎。

所以基本上,为了回答你的问题,看看ecmascript,看看大家的共识是什么,javascript是如何"应该"工作的,但是你应该关注javascript,因为这就是你将要用的代码。