什么是跨浏览器支持JavaScript 1.7的新功能?特别是数组理解和"let"语句

daf*_*olf 16 javascript python arrays internet-explorer cross-browser

https://developer.mozilla.org/en/New_in_JavaScript_1.7

许多这些新功能都是从Python借来的,并且可以创建更简洁的应用程序,这总是一件好事.你打了多少次

for (i = 0; i < arr.length; i++) {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

对于非常简单的操作?这不会更容易:

[/* ... */ for each (i in arr)]
Run Code Online (Sandbox Code Playgroud)

我认为简洁是一件好事.基本上,这最终归结为IE.

IE是否支持这些新功能?其他浏览器怎么样?

小智 33

虽然这个问题有点陈旧,并且被标记为"已回答" - 我在谷歌上发现它并且给出的答案可能不准确,或者如果没有,肯定是不完整的.

注意Javascript不是标准非常重要.Ken正确地提到ECMAScript是所有浏览器都要遵守的跨浏览器标准,但他没有澄清的是Javascript不是ECMAScript.

要说Javascript"实现"ECMAScript意味着Javascript包含ECMAScript,以及它自己专有的非跨浏览器功能.在for each由Nicholas给定的例子是由Mozilla加入一个专有特征,是不是在任何标准,并且因此不太可能被任何其他浏览器可以采用的一个实例.

Javascript 1.7和1.8功能对于XUL中的扩展开发很有用,但绝不应该用于跨浏览器开发 - 这就是标准的用途.


Ken*_*Ken 9

不,当他们说"JavaScript"时,他们的意思是字面意思:Gecko使用的ECMAScript引擎.JScript和其他引擎(AFAIK)不支持这些功能.

编辑:根据维基百科,JavaScript 1.7实现ECMAScript"版本3加上所有JavaScript 1.6增强,加上Pythonic生成器和数组理解([a*a for(a in iter)]"),使用let,destructuring assign(var [a ,b] = [1,2])".所以这些功能不是ECMAScript的一部分.