JavaScript1.7新特性的跨浏览器支持是什么?具体排列理解与“让”政治家

2024-05-13 05:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这些新特性中的很多都是从Python中借用的,并且允许创建不那么冗长的应用程序,这总是一件好事。你打了多少次了

for (i = 0; i < arr.length; i++) {
    /* ... */
}

对于真正简单的操作?这不是更容易吗:

[/* ... */ for each (i in arr)]

我认为简洁是件好事。不过,归根结底,这一切都要归结为IE。

IE支持这些新功能吗?其他浏览器呢?


Tags: inhttpsorg应用程序mozilladevelopernewfor
3条回答

除了IE不支持它之外,基于webkit的浏览器(Safari、Chrome)似乎也不支持JS1.7(实际上是执行JS1.7中声明的脚本标记),这意味着JS1.7目前仅限于Geko浏览器。

而且由于Webkit仍然只执行标记为1.7的脚本,这也意味着我们甚至不能优雅地失败,但是当我们使用任何新的关键字或语法时,我们只会在这些浏览器上产生语法错误。

虽然这个问题有点老了,而且标记为“已回答”——但我在谷歌上找到了它,给出的答案可能不准确,或者如果不准确,肯定是不完整的。

需要注意的是,Javascript不是一个标准。肯正确地提到了ECMAScript是所有浏览器都要遵循的跨浏览器标准,但他没有澄清的是Javascript不是ECMAScript。

说Javascript“实现”ECMAScript意味着Javascript包括ECMAScript,还有它自己专有的额外的非跨浏览器特性。nicholas给出的for each示例是Mozilla添加的专有功能的一个示例,它不在任何标准中,因此不太可能被任何其他浏览器采用。

Javascript 1.7和1.8特性对于XUL中的扩展开发非常有用,但是不应该用于跨浏览器开发——这就是标准的用途。

不,当他们说“JavaScript”时,字面意思是:Gecko使用的ECMAScript引擎。JScript和其他引擎(AFAIK)不支持这些特性。

编辑:根据wikipedia,JavaScript 1.7实现了ECMAScript“Edition 3加上JavaScript 1.6的所有增强,加上Pythonic生成器和数组理解([a*a for(a in iter))、带let的块作用域、解构赋值(var[a,b]=[1,2])”。所以这些特性不是ECMAScript的一部分。

相关问题 更多 >