【发布时间】:2011-05-11 01:54:19
【问题描述】:
可能重复:
Is Chrome's JavaScript console lazy about evaluating arrays?
打开 Chrome 开发者工具并输入:
var a = [];console.log(a);a.push(1);console.log(a);
你会期望这会输出类似
[]
[1]
但它却输出
[1]
[1]
行为是一样的
var a = [];console.log(a);a[0] = 1;console.log(a);
谁能解释这种行为?
在 OS X 上运行 Chrome。在 32 位 Windows 7 上的行为相同。
编辑:无论语句是否在同一行,行为都是相同的。我只是在一行中提供了它们以便于测试。
投入
var a = [];
console.log(a);
a.push(1);
console.log(a);
在一个文件中运行它会产生相同的行为。
编辑 x 2 如果您不想制作文件进行测试,请参阅:http://jsfiddle.net/9N4A6/。
【问题讨论】:
-
我的猜测是对
console.log(a)的调用将数组对象排队等待打印,但数组到字符串的转换只有在整行完成后才会发生。 -
@CMS:没看到 - 谢谢
-
不客气@Jamie :)