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