There are two different answers to this, one for dangling commas in object initializers and one for dangling commas in array initializers:
For object initializers, e.g.:
var obj = {
a: 1,
b: 2,
c: 3,
};
It's fixed in IE8 and above. Test it here: http://jsbin.com/UXuHopeC/1 (source). IE7 and earlier will throw a syntax error on the }
after the dangling comma.
For array initializers, e.g.:
var arr = [
1,
2,
3,
];
It was "fixed" in IE9 and above. Test it here: http://jsbin.com/UXuHopeC/2 (source). IE8 and earlier will give that array four entries, the last one having the value undefined
. IE9 and above give it three entries.
I put "fixed" in quotes because the spec was originally unclear about whether the array should have a final undefined
entry or not, so neither behavior was incorrect. It's just that IE went one way and everyone else went the other. :-)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…