javascript - 循环内的奇怪输出

标签 javascript

我有一个如下循环:

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

但是,在浏览器控制台(Chrome)中,我不断收到此消息:

Array[0]
    length: 0
    __proto__: Array[0]

作为console.log(arr)的输出,这表明arr中没有任何内容。但是日志语句怎么可能被执行呢?!

最佳答案

可能,脚本末尾的数组为空,因为 chrome 控制台会向您显示对象的当前状态(当对象本身更改时也会更改)脚本执行后打开时。 (我认为这是一个问题)

要重现此内容:

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

arr.pop(); // empty the array

http://jsfiddle.net/47nrc/ (仅适用于 Chrome)

在控制台关闭的情况下执行它,然后当你打开它时你可以看到Array[0]

一种解决方案可能是记录数组的字符串表示形式:

console.log(arr.join());

另请参阅:https://code.google.com/p/chromium/issues/detail?id=50316

关于javascript - 循环内的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451391/

相关文章:

javascript - 无法使用nodeJS从S3下载文件: few files don't finish

javascript - Apollo Server gql使用推荐

javascript - 将图像保存在 Extjs 目录中

javascript - 以 AngularJS 方式在主页中包含所有 js 文件和 css 文件好吗?

javascript - 图像上传和预览选项,代码不允许显示不同的图像

javascript - 如何将函数绑定(bind)到 URL 查询字符串的更改,而不是 hashchange

javascript - Angular UI-GRID 不在页面上显示网格

javascript - ng 样式/动态照片网格上的 Angular 摘要循环

javascript - 使用JS和PHP加载效果

javascript - 如何创建一个提取不同长度字符串的中间到末尾的函数?