现代浏览器和 Node.js 等环境允许你说 {a:1, b:2,} 或 [1,2,3,]。这在 Internet Explorer 中一直存在问题。这在 Internet Explorer 9 中是否已修复?
Internet Explorer 9 是否会因数组和对象文字末尾的额外逗号而窒息?
对此有两种不同的答案,一种用于对象初始值设定项中的悬空逗号,另一种用于数组初始值设定项中的悬空逗号:
对于对象初始值设定项,例如:
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 及更早版本将为该数组提供四个条目,最后一个值为undefined
。IE9 及以上给它三个条目。
我将“fixed”放在引号中,因为规范最初不清楚数组是否应该有一个最终undefined
条目,所以这两种行为都不正确。只是 IE 走向了一个方向,而其他所有人都走向了另一个方向。:-)
该文件声称它是/将被更正: 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 不支持此扩展。