2013-04-15 56 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)。 –