Internet Explorer 9 是不是会在数组和对象文字末尾的额外逗号上阻塞?

Posted

技术标签:

【中文标题】Internet Explorer 9 是不是会在数组和对象文字末尾的额外逗号上阻塞?【英文标题】:Does Internet Explorer 9 choke on extra commas at the end of array and object literals?Internet Explorer 9 是否会在数组和对象文字末尾的额外逗号上阻塞? 【发布时间】:2011-06-29 12:39:20 【问题描述】:

现代浏览器和 Node.js 等环境允许您使用 a:1, b:2, 或 [1,2,3,]。这在历史上一直是 Internet Explorer 的问题。这在 Internet Explorer 9 中是否已修复?

【问题讨论】:

不确定,但您有什么理由留下尾随, @alex:偶然。相信我。 我知道这对我来说很重要。这么小的东西…… 手工编辑代码时,尾随逗号非常好,可以减少添加或删除行时潜在的未来错误。 @alex 另一个原因是如果你想从后端 [ for_each elem in list elem, end] 构造一个 JS 数组。语法是组成的。 【参考方案1】:

对此有两种不同的答案,一种用于对象初始值设定项中的悬空逗号,另一种用于数组初始值设定项中的悬空逗号:

对于对象初始化器,例如:

var obj = 
    a: 1,
    b: 2,
    c: 3,
;

IE8 及以上版本中已修复。在这里测试它:http://jsbin.com/UXuHopeC/1 (source)。 IE7 及更早版本将在悬空逗号后的 上抛出语法错误。

对于数组初始化器,例如:

var arr = [
    1,
    2,
    3,
];

它已在 IE9 及更高版本中“修复”。在这里测试它:http://jsbin.com/UXuHopeC/2 (source)。 IE8 和更早版本将给该数组四个 条目,最后一个具有值undefined。 IE9 及以上版本给它三个条目。

我将“固定”放在引号中,因为规范最初并不清楚数组是否应该有一个最终的 undefined 条目,所以这两种行为都不正确。只是 IE 走的是一条路,其他人走的是另一条路。 :-)

【讨论】:

请注意,有些版本的 IE 会出现这种情况...我刚刚在IE 9 Update 9.0.30 中向我们的软件提交了一个问题,因为对象文字中的尾随逗号。由于我们不再支持 IE 8 及更低版本,因此选择将其保留在其中,因此自责。 @JuanMendes:我不相信任何版本的 IE9 在对象字面量中存在逗号结尾的错误,因为它已在 IE8 中得到修复。 客户刚刚提交了错误,说它在IE 9 Update 9.0.23 中很好,但在IE 9 Update 9.0.30 中中断,这可能是几乎立即修复的回归。我正在尝试使用该特定版本来证明这一点,但该报告看起来客户确实进行了尽职调查。 @JuanMendes:很有趣。 “初始化器”和文字有什么区别?如果我说var a = [1,];my_func([1,]); 不同吗?【参考方案2】:

此文档声称它是/将被更正: http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx

更正的问题

数组文字中的尾随逗号添加到数组的长度

示例

var len = [1,2,3,].length;

alert(len); //should be 3, IE8 says 4

它没有具体提到对象。只是数组。


编辑:更多信息。从此 PDF 文档:

http://download.microsoft.com/download/8/4/2/8427CF1B-08B3-4557-952D-102E7A8FA64C/[MS-ES3].pdf

...从此页面下载:http://msdn.microsoft.com/en-us/library/ff520996(VS.85).aspx

JScript 5.8 支持将单个尾随逗号作为 ObjectLiteral 中的最后一项出现。 JScript 5.7 不支持此扩展。

【讨论】:

以上是关于Internet Explorer 9 是不是会在数组和对象文字末尾的额外逗号上阻塞?的主要内容,如果未能解决你的问题,请参考以下文章

Internet Explorer 9 无法解析 Angular UI-Router

强制 Internet Explorer 9 使用 IE 9 模式

Internet Explorer 9 中的渐变

Internet Explorer 9 - 按比例调整图像大小

Internet Explorer 9 可以占用多长时间的 URL?

Internet Explorer 9 拖放 (DnD)