Internet Explorer 9 是否会因数组和对象文字末尾的额外逗号而窒息?

IT技术 javascript internet-explorer-9
2021-02-20 05:53:29

现代浏览器和 Node.js 等环境允许你说 {a:1, b:2,} 或 [1,2,3,]。这在 Internet Explorer 中一直存在问题。这在 Internet Explorer 9 中是否已修复?

2个回答

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

对于对象初始值设定项,例如:

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

它已在IE8及更高版本中修复在这里测试:http : //jsbin.com/UXuHopeC/1来源)。IE7 及更早版本将}在悬空逗号之后引发语法错误

对于数组初始值设定项,例如:

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

它在IE9及更高版本中被“修复” 在这里测试:http : //jsbin.com/UXuHopeC/2来源)。IE8 及更早版本将为该数组提供四个条目,最后一个值为undefinedIE9 及以上给它三个条目。

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

@JuanMendes:有趣。
2021-04-29 05:53:29
请注意,有些版本的 IE 会出现这种情况……我刚刚在我们的软件中遇到了一个问题,IE 9 Update 9.0.30因为对象文字中的尾随逗号。由于我们不再支持 IE 8 及更低版本,因此选择将其留在那里,这让我感到非常沮丧。
2021-05-01 05:53:29
客户刚刚提交了错误,说它很好,IE 9 Update 9.0.23但坏了IE 9 Update 9.0.30,这可能是一个几乎立即修复的回归。我正在尝试使用该特定版本来证明这一点,但该报告看起来客户确实进行了尽职调查。
2021-05-18 05:53:29
@JuanMendes:我不相信任何版本的 IE9 在对象文字错误中都有尾随逗号,因为它已在 IE8 中修复。
2021-05-19 05:53:29
“初始化器”和文字有什么区别?如果我说var a = [1,];那与my_func([1,]);?
2021-05-21 05:53:29

该文件声称它是/将被更正: 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 不支持此扩展。