Javascript Google Chrome和Firefox之间的差异
我在Google Chrome(14.0.835.186)和Firefox(6.0.2)上得到了不同的结果 有人能解释这种差异吗?规范确定的行为是什么 编辑:在Firefox上我看到Javascript Google Chrome和Firefox之间的差异,javascript,firefox,google-chrome,Javascript,Firefox,Google Chrome,我在Google Chrome(14.0.835.186)和Firefox(6.0.2)上得到了不同的结果 有人能解释这种差异吗?规范确定的行为是什么 编辑:在Firefox上我看到[0],[0,1]等。在Chrome上我看到[0,1,2,3,4],[0,1,2,3,4]等 我使用的是Mac OS 10.6.8。Firefox在这种情况下在技术上更为正确,因为它在循环中的每个点输出对象的状态,而Chrome显然在循环结束时才输出每个console.log,但我不知道有一个标准规范涵盖控制台主机对
[0]
,[0,1]
等。在Chrome上我看到[0,1,2,3,4]
,[0,1,2,3,4]
等
我使用的是Mac OS 10.6.8。Firefox在这种情况下在技术上更为正确,因为它在循环中的每个点输出对象的状态,而Chrome显然在循环结束时才输出每个console.log,但我不知道有一个标准规范涵盖控制台主机对象 请参阅此JSFIDLE:以表明这是唯一具有这种奇怪行为的console.log。请参阅:
编辑:为了确保清楚,这只是控制台中的一个“错误”,在Chrome中创建阵列的方式没有问题。您正在记录一个活动对象 尝试下面的代码()并查看差异:
var i, test = [];
for(i=0; i<5; i++) {
test.push(i);
console.log( test.toString() ); // notice .toString() addition
}
var i,test=[];
对于(i=0;i为什么否决?我认为你在这里不正确。这是console.log的一个特性,其他函数也不会发生这种情况。看到这个JSFIDLE循环中有一个不同的函数,它按预期工作。是的,我说得太快了。这是一个console.log
问题,这使得调试更具挑战性。编辑你的回答,然后我会投票。我在我的答案中添加了JSFIDLE。看起来它已被报告为一个bug:要绕过它,可以执行var a=[];console.log(a.join(',');a[0]=1;console.log(a.join(','));