我在Chrome瀏覽器(14.0.835.186)和Firefox(6.0.2)上獲得this fiddle的不同結果。Google Chrome和Firefox之間的差異
任何人都可以解釋這種差異嗎?規格確定的行爲是什麼?
編輯:在Firefox我看到[0]
,[0, 1]
等在Chrome我看到[0, 1, 2, 3, 4]
,[0, 1, 2, 3, 4]
,[0, 1, 2, 3, 4]
等
我使用Mac OS 10.6.8。
我在Chrome瀏覽器(14.0.835.186)和Firefox(6.0.2)上獲得this fiddle的不同結果。Google Chrome和Firefox之間的差異
任何人都可以解釋這種差異嗎?規格確定的行爲是什麼?
編輯:在Firefox我看到[0]
,[0, 1]
等在Chrome我看到[0, 1, 2, 3, 4]
,[0, 1, 2, 3, 4]
,[0, 1, 2, 3, 4]
等
我使用Mac OS 10.6.8。
參見:
這是一個奇怪的行爲或控制檯,雖然我不能告訴你爲什麼。
編輯:爲了確保清楚,這只是控制檯中的一個「錯誤」,在Chrome中創建數組的方式沒有問題。
在這種情況下,Firefox在技術上更加正確,因爲它會在循環中的每個點上輸出對象的狀態,而Chrome顯然在等待循環結束以輸出每個console.log,但我不知道涵蓋控制檯主機對象的標準規範。
看到這個jsFiddle:http://jsfiddle.net/jfriend00/LRGP2/顯示這只是console.log有這種奇怪的行爲。
爲什麼downvote?我不認爲你在這裏是正確的。這是console.log的一個特點,並不會發生在那裏的其他函數。在循環中看到這個jsFiddle http://jsfiddle.net/jfriend00/LRGP2/具有不同的功能,並且按預期工作。 – jfriend00
是的,我說得太快了。這是一個'console.log'問題,這使得調試更具挑戰性。編輯你的答案,我會upvote。 – Randomblue
我添加了jsFiddle到我的答案。 – jfriend00
您正在記錄一個活物體。
嘗試下面的代碼(fiddle)和看到的區別:
var i, test = [];
for(i=0; i<5; i++) {
test.push(i);
console.log(test.toString()); // notice .toString() addition
}
順便說一下,同樣和嚴重的例子可以在Opera Dragongfly可見 - 陣列甚至可點擊的並且可擴展的那裏。
看起來像它已被報告爲一個錯誤:https://bugs.webkit.org/show_bug.cgi?id=35801 – Jacob
爲了解決它,你可以做'var a = [];的console.log(a.join( '')); a [0] = 1; console.log(a.join(','));' – timrwood