在当前的Google Chrome(版本22.0.1229.79,在带有Mountain Lion的iMac上),以下代码
var arr = [1, 3, 5];
console.log(arr);
delete arr[1];
console.log(arr);
console.log(arr.pop());
console.log(arr);
将显示
[1, undefined × 2]
[1, undefined × 2]
5
[1, undefined × 1]
还有其他情况导致Firefox的行为也相似。它们是Chrome和Firefox上的漏洞 - 但Firefox和Chrome都容易受到类似错误的影响似乎很奇怪 - 或者它是否有阵列删除和console.log
的行为?据推测,console.log
不应该在单独的线程上运行。
答案 0 :(得分:1)
在Firefox 7.0中:
var arr = [1,3,5];
console.log(delete arr [1]); // 将显示[1,undefined,5]
在我看来,这是一个正确的行为=)所以可能只是一个错误。
答案 1 :(得分:1)
这是由于排队console.log
处理,因此打印延迟,并显示对象或数组的更高版本:Is Chrome's JavaScript console lazy about evaluating arrays?
我的答案有5个解决方案,JSON.stringify()
是最好的解决方案。