2013-04-15 99 views
0

我跑this code in JSBin,我也得到一個控制檯輸出預期:的Javascript奇怪的行爲和鉻

//matrix C before multiplySeq function call 
[[0, 0, 0], [0, 0, 0], [0, 0, 0]] 
//matrix C after multiplySeq function call 
[[6, 6, 6], [6, 6, 6], [6, 6, 6]] 

然而,當我運行相同的代碼,Firefox和Chrome,我得到:

//matrix C before multiplySeq function call 
[[6, 6, 6], [6, 6, 6], [6, 6, 6]] 
//matrix C after multiplySeq function call 
[[6, 6, 6], [6, 6, 6], [6, 6, 6]] 

我不知道發生了什麼,有人可以指出我可能會在這裏失蹤?

PS:我得到所需的輸出,當我在IE測試(哇,沒想到我會那麼說)

+0

清除緩存,我得到預期的結果。 –

+0

不是真的..我想這是一個緩存問題 – karthikr

+0

[怪異的行爲與數組的javascript](http://stackoverflow.com/questions/13766973/weird-behaviour-of-javascript-with-arrays) –

回答

0

你在Chrome和Firefox的問題是,他們沒有你的時候建立的顯示日誌,但是當你瀏覽對象。這就是爲什麼第一個日誌顯示最終值。

您可以通過克隆的價值,例如

console.log(JSON.parse(JSON.stringify(C2))); 

Demonstration

需要注意的是Chrome瀏覽器的一些版本現已發放少量了對這一現象的警告得到更相關的結果。

+0

嗯有趣..你能指出一個更詳細的鏈接嗎?謝謝! – potatoes

+0

@potatoes我在評論中鏈接到以前的答案。除了這是一個常見的「已知問題」,我現在還沒有任何Google或Mozilla參考。您可以使用我爲簡單對象提供的解決方案(我也有一個用於大型或循環對象的小型lib)。 –