我一直在阅读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
答案 0 :(得分:15)
JavaScript 1.8.5是Mozilla的ECMAScript实现,增加了一些功能。它是ECMAScript规范(以及IE,Chrome和Opera等当前实现)的超集。 Mozilla推动它添加到自己的浏览器中的功能,它们可能会也可能不会进入ECMA。请注意,Mozilla是W3C的成员并且有一些说法,但我的猜测是大多数功能都无法实现。
底线除非您编写特定于firefox,FF扩展程序,XUL应用程序,Rhino的内容,否则请不要使用它(由于@Raynos而添加了Rhino)
答案 1 :(得分:3)
明确关注ES5。 1.7&的问题1.8功能是它们改变了语言的语法,因此你不能将它们填充到其他代码中。
您可以使用ES5模拟对象的所有属性,但无法模拟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等库,它们可以为您定义常用的功能实用方法。
答案 2 :(得分:0)
我认为ECMAScript是“标准”,就像蓝图一样,javascript是它所基于的实际语言。有点像w3c如何有他们的标准,然后人们制造(或不)使渲染引擎基于它。
所以基本上回答你的问题,看看ECMAScript看看共识是什么,javascript是如何“应该”起作用的,但是你应该专注于javascript,因为这就是你实际编写的内容。