2011-09-30 110 views
4

我在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。

+0

看起來像它已被報告爲一個錯誤:https://bugs.webkit.org/show_bug.cgi?id=35801 – Jacob

+0

爲了解決它,你可以做'var a = [];的console.log(a.join( '')); a [0] = 1; console.log(a.join(','));' – timrwood

回答

3

在這種情況下,Firefox在技術上更加正確,因爲它會在循環中的每個點上輸出對象的狀態,而Chrome顯然在等待循環結束以輸出每個console.log,但我不知道涵蓋控制檯主機對象的標準規範。

看到這個jsFiddle:http://jsfiddle.net/jfriend00/LRGP2/顯示這只是console.log有這種奇怪的行爲。

+0

爲什麼downvote?我不認爲你在這裏是正確的。這是console.log的一個特點,並不會發生在那裏的其他函數。在循環中看到這個jsFiddle http://jsfiddle.net/jfriend00/LRGP2/具有不同的功能,並且按預期工作。 – jfriend00

+0

是的,我說得太快了。這是一個'console.log'問題,這使得調試更具挑戰性。編輯你的答案,我會upvote。 – Randomblue

+0

我添加了jsFiddle到我的答案。 – jfriend00

2

您正在記錄一個活物體

嘗試下面的代碼(fiddle)和看到的區別:

var i, test = []; 

for(i=0; i<5; i++) { 
    test.push(i); 
    console.log(test.toString()); // notice .toString() addition 
} 

順便說一下,同樣和嚴重的例子可以在Opera Dragongfly可見 - 陣列甚至可點擊的並且可擴展的那裏。

相關問題