Modern browsers and environments like Node.js allow you to say {a:1, b:2,} or [1,2,3,]. This has historically been problematic with Internet Explorer. Is this fixed in Internet Explorer 9?
JavaScript has allowed trailing commas in array literals since the beginning. Trailing commas are now also allowed in object literals, function parameters, named imports, named exports, and more.
A trailing comma, also known as a dangling or terminal comma, is a comma symbol that is typed after the last item of a list of elements. Since the introduction of the JavaScript language, trailing commas have been legal in array literals. Later, object literals joined arrays.
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. :-)
This document claims it is/will be corrected: http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx
Corrected Issues
Trailing commas in array literals added to the array’s length
Example
var len = [1,2,3,].length;
alert(len); //should be 3, IE8 says 4
It makes no specific mention of Objects. Just Arrays.
EDIT: More info. From this PDF document:
http://download.microsoft.com/download/8/4/2/8427CF1B-08B3-4557-952D-102E7A8FA64C/[MS-ES3].pdf
...dowloaded from this page: http://msdn.microsoft.com/en-us/library/ff520996(VS.85).aspx
JScript 5.8 supports the occurrence of a single trailing comma as the last item within an ObjectLiteral. JScript 5.7 does not support this extension.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With