log(array)显示不同的数组内容,而不是迭代数组并显示单个元素

console.log(array) shows different array contents than iterating the array and displaying the individual elements

本文关键字:显示 数组 迭代 元素 单个 array log      更新时间:2023-09-26

我有以下代码:

console.log("start");
for(var i = 0; i < array.length; i++){
    console.log(i + " = " + array[i]);
}
console.log(array);
console.log("end");

输出如下:

[16:34:41.171] start
[16:34:41.171] 0 = 0
[16:34:41.172] 1 = 168
[16:34:41.172] 2 = 171
[16:34:41.172] [0, 168, 171, 139]
[16:34:41.172] end

也就是说,它在迭代数组时不显示139元素,但是console.log在输出整个数组时打印它。为什么?(<——问题)

我修改数组以后,是控制台。日志以某种方式延迟,直到我改变数组后?注意,虽然改变了语句的顺序,但将consoel.log(array)直接放在开头并不会改变结果(仍然是不同的输出)。

我用的是firefox20.0

Update:如果您希望看到此行为,请在控制台中复制并粘贴代码并执行。然后关闭开发人员工具并再次打开,显然指针的事情只发生在代码在后台执行时(当您重新打开控制台时发生)。

Console.log对象的输出,是一个指针,不是一个实际值。这意味着如果对象稍后更改,console.log对象将被更新。试一试:

console.log("start");
var array = [1];
for(var i = 0; i < array.length; i++){
    console.log(i + " = " + array[i]);
}
console.log(array);
console.log("end");
array.push(9999);// you will see the 9999 in the console no matter it was added after the output.

要防止指针问题,请尝试以下操作:console.log (array.join ());因为稍后在应用程序的某个地方,您将添加139值