2011-09-30 83 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可见 - 阵列甚至可点击的并且可扩展的那里。

相关问题