Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ECMAScript 5和JavaScript 1.8.5在语言特性方面的相关性是什么?_Javascript_Mozilla_Ecmascript 5 - Fatal编程技术网

ECMAScript 5和JavaScript 1.8.5在语言特性方面的相关性是什么?

ECMAScript 5和JavaScript 1.8.5在语言特性方面的相关性是什么?,javascript,mozilla,ecmascript-5,Javascript,Mozilla,Ecmascript 5,我一直在阅读Mozilla不断开发的JavaScript,一直到1.8.5版本: 我的问题是:JavaScript 1.8.5+和ECMAScript 5+在语言特性方面的相关性是什么?Mozilla的新JavaScript功能(如生成器、数组理解等)是否有可能成为ECMAScript的一部分 我只是想弄清楚是否值得学习JavaScript 1.8.5特性(并将其填充到不支持的浏览器中),还是应该忘记JS 1.8.5,专注于学习/填充新的ECMAScript 5特性 仅供参考:Mozilla在这

我一直在阅读Mozilla不断开发的JavaScript,一直到1.8.5版本:

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

我只是想弄清楚是否值得学习JavaScript 1.8.5特性(并将其填充到不支持的浏览器中),还是应该忘记JS 1.8.5,专注于学习/填充新的ECMAScript 5特性

仅供参考:Mozilla在这里谈到了他们计划如何使JavaScript符合ECMAScript 5:

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


因此,基本上要回答您的问题,请查看ECMAScript以了解共识是什么,javascript“应该”如何工作,但您应该关注javascript,因为您将实际使用它进行编码

挑战性地关注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,但你至少要等一年


所以,现实地说,不要指望学习会在一两年内得到回报。很可能不会有回报。请务必查看一些库,例如可以为您定义通用函数实用程序方法的库。

JavaScript 1.8.5是Mozilla对ECMAScript的实现,并添加了一些功能。它是ECMAScript规范(以及当前的IE、Chrome和Opera等实现)的超集。Mozilla为自己的浏览器添加的功能而努力,这些功能可能会也可能不会进入ECMA。请注意,Mozilla是W3C的一员,有一定的发言权,但我猜大多数功能都做不到


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

我不想看到mozilla带来的pythonization。我的大问题是,Javascript何时才能最终在其正则表达式中处理Unicode,至少到。在今天的后ASCII世界中,如果没有它,它无异于毫无用处。我也是,我认为一些功能很酷,但它有些过火,pythonization是一个很好的表达方式。如果我选择(像ActionScript一样)@JuanMendes,我唯一想要的就是能够声明类型。请不要引入严格的类型!想象一下,如果jQuery在内部强制严格键入。我们都必须开始使用它。对于我们所依赖的那些流行的第三方库来说,这不是一件可选的事情。@JuanMendes我使用原型OO和函数代码。我不写程序代码。我只是从来没有使用过类型检查。我编写了一个开发版本的代码,其中到处都是调试语句和测试,然后让编译器将其删除。由于高级设计的一致性,它还有助于改变语言的语法,方法是引入一个解析器/生成器,将代码编译成普通的JavaScript。见咖啡脚本-。这将是一种有效的(尽管非常耗时)填充JS 1.8.5支持的方法。@RoyTinker可以用C编写脚本。我认为ECMAScript应该支持C。我有一个C到JavaScript的编译器。@tchrist,你的评论离题了,问题不在于此regex@Juan,问题是关于两个标准之间的联系,包括谈论新的。问这两个新标准中的任何一个是否恰好解决了一个问题似乎是很自然的。@Juan为什么这么大惊小怪?评论总是离题,至少它不是答案。它也比我们讨论它的评论更有价值;)或者犀牛!或者在mozilla JavaScript解释器上运行的任何其他东西。这很酷。实际上,我认为Rhino使用的JavaScript版本要旧得多,但是是的,你甚至可以选择要使用的版本,它目前支持1.7版本,这要感谢你的直截了当的回答。