Javascript 循环内的奇怪输出

Javascript 循环内的奇怪输出,javascript,Javascript,我有一个如下循环: for (var i = 0; i < arr.length; i++) { console.log(arr); // rest of the code does not touch 'arr' ... } 作为console.log(arr)的输出,这表明arr中没有任何内容。但是日志语句怎么可能被执行呢 看这把小提琴: var arr=[]; 对于(变量i=0;i

我有一个如下循环:

for (var i = 0; i < arr.length; i++) {
    console.log(arr);
    // rest of the code does not touch 'arr'
    ...
}
作为
console.log(arr)
的输出,这表明
arr
中没有任何内容。但是日志语句怎么可能被执行呢

看这把小提琴:

var arr=[];
对于(变量i=0;i
与之相比:

var arr2 = [1,2,3];

for (var i = 0; i < arr2.length; i++) {
    console.log("arr2 = " + arr2);
    // rest of the code does not touch 'arr'

}
var arr2=[1,2,3];
对于(变量i=0;i
您的代码(假设您所提供的就是您所拥有的)运行良好。它不进入循环(参见第一个案例,并与小提琴中的第二个案例进行比较)

因此,它必须位于代码中记录此数组的其他位置

看这把小提琴:

var arr=[];
对于(变量i=0;i
与之相比:

var arr2 = [1,2,3];

for (var i = 0; i < arr2.length; i++) {
    console.log("arr2 = " + arr2);
    // rest of the code does not touch 'arr'

}
var arr2=[1,2,3];
对于(变量i=0;i
您的代码(假设您所提供的就是您所拥有的)运行良好。它不进入循环(参见第一个案例,并与小提琴中的第二个案例进行比较)


因此,它必须位于代码中记录此数组的其他位置

很可能,脚本末尾的数组是空的,因为chrome console会在脚本执行后打开对象时,向您显示对象的当前状态(当对象本身发生变化时会发生变化)。(我认为这是一个问题)

要复制这一点:

var arr = [1];
for (var i = 0; i < arr.length; i++) {
    console.log(arr);
}

arr.pop(); // empty the array

另请参见:

可能,脚本末尾的数组是空的,因为chrome console会在脚本执行后打开对象时,向您显示对象的当前状态(当对象本身发生变化时会发生变化)。(我认为这是一个问题)

要复制这一点:

var arr = [1];
for (var i = 0; i < arr.length; i++) {
    console.log(arr);
}

arr.pop(); // empty the array

另请参见:

在您的脚本(所有脚本)末尾,数组为空?我尝试使用空数组,但它没有进入循环。
arr
中有什么?它是否为空?JavaScript工作,如果
i
为零且
arr.length
为零,则
i
false
,它将不会进入循环。所以arr不是零长度。在哪里启动arr?使用什么方法?在脚本(所有脚本)的末尾,数组是空的?我尝试了一个空数组,但它没有进入循环。
arr
中有什么?它是否为空?JavaScript工作,如果
i
为零且
arr.length
为零,则
i
false
,它将不会进入循环。所以arr不是零长度的。在哪里启动arr?使用什么方法?听起来很可能。我在控制台关闭的情况下运行了脚本,我可以确认循环在(长时间运行的)执行过程中被输入了多次(由带有相应行号的
console.log(arr)
的一系列输出证明)。每个输出都是空的。您也会弹出数组的所有元素吗?最终(在脚本停止后),是的,这是我检查控制台以记录消息的时候。这听起来很可能。我在控制台关闭的情况下运行了脚本,我可以确认循环在(长时间运行的)执行过程中被输入了多次(由带有相应行号的
console.log(arr)
的一系列输出证明)。每个输出都是空的。您也会弹出数组的所有元素吗?最终(在脚本停止后),是的,这是我检查控制台以记录消息的时候。谢谢您的建议。但是在Chrome控制台中,每个日志输出对应一个行号,我可以确认显示的行号正是for循环中
console.log(arr)
的行号。所以这肯定不是你的建议。谢谢你的建议。但是在Chrome控制台中,每个日志输出对应一个行号,我可以确认显示的行号正是for循环中
console.log(arr)
的行号。所以这肯定不是你建议的。
console.log(arr.join());