我在Google Chrome(14.0.835.186)和Firefox(6.0.2)上获得this fiddle的不同结果。
任何人都可以解释这种差异吗?规范确定的行为是什么?
编辑 :在Firefox上,我看到[0]
,[0, 1]
等。在Chrome上,我看到[0, 1, 2, 3, 4]
,{{1 },[0, 1, 2, 3, 4]
等
我正在使用Mac OS 10.6.8。
答案 0 :(得分:3)
在这种情况下,Firefox在技术上更正确,因为它在循环中的每个点输出对象的状态,而Chrome显然等到循环结束时输出每个console.log,但我不知道标准规范,涵盖控制台主机对象。
请参阅此jsFiddle:http://jsfiddle.net/jfriend00/LRGP2/以表明这只是具有这种奇怪行为的console.log。
答案 1 :(得分:3)
查看:强>
这是一个奇怪的行为或控制台,虽然我不能告诉你为什么。
编辑:为了确保清楚,这只是控制台中的“错误”,在Chrome中创建数组的方式没有问题。
答案 2 :(得分:2)
您正在记录实时对象。
尝试以下代码(fiddle)并查看差异:
var i, test = [];
for(i=0; i<5; i++) {
test.push(i);
console.log( test.toString() ); // notice .toString() addition
}
顺便说一下,在Opera Dragongfly中可以看到同样且加剧的例子 - 阵列甚至可以在那里点击和扩展。