IE6 IE7 IE8 不會忽略數(shù)組直接量的末尾空元素

字號:


    標準參考
    ECMAScript 規(guī)范第三版 11.1.4 Array Initialiser 中規(guī)定,在以直接量定義數(shù)組元素時,在開始、中間和末尾都可以忽略元素,被忽略的元素也會被放入數(shù)組中。即:
    [,1,,3,].toString()==",1,,3,"
    ECMAScript 規(guī)范第五版 11.1.4 Array Initialiser 中增加了一條規(guī)則,若上述被忽略的元素在數(shù)組末尾,則該忽略元素將不被放入數(shù)組中。即:
    [,1,,3,].toString()==",1,,3"
    問題描述
    當數(shù)組直接量以 ',' 結(jié)尾時,IE 和非 IE 得到的數(shù)組對象的長度不一致。IE 會以 ECMAScript 規(guī)范第三版中規(guī)定的方式解析該數(shù)組。即該數(shù)組的長度將比其他瀏覽器多 1。
    造成的影響
    該問題將造成 IE 和非 IE 得到的數(shù)組長度不一致。
    受影響的瀏覽器
    IE6 IE7 IE8
    問題分析
    分析以下代碼:
    alert([1,2,3,].length);
    以上代碼在各瀏覽器中的運行結(jié)果如下:
    IE 其他瀏覽器
    4 3
    可見:IE 沒有忽略最后一個元素,這與 ECMAScript 規(guī)范第三版的規(guī)則相符,而其他瀏覽器則遵循 ECMAScript 規(guī)范第五版中的規(guī)則。
    解決方案
    數(shù)組直接量的最后不要出現(xiàn) ',',以保證兼容各瀏覽器。