Does Internet Explorer 9 choke on extra commas at the end of array and object literals?

前端 未结 2 790
感情败类
感情败类 2020-11-30 11:11

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 Inter

2条回答
  •  一向
    一向 (楼主)
    2020-11-30 11:38

    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. :-)

提交回复
热议问题