相关疑难解决方法(0)

Google Chrome console.log()与对象和数组不一致

今天我正在帮助同事调试一些代码,我注意到console.log()谷歌Chrome中有一个奇怪的行为:

如果您:

  1. 创建一个嵌套数组(例如,[[345,"test"]])

  2. 使用将数组记录到控制台console.log().

  3. 修改其中一个内部数组值,然后console.log()输出后面的值 - 而不是console.log()执行时数组的值.

JavaScript:

var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}


var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例

在Firefox中不会发生此行为.

另外需要注意的是,如果我在Chrome调试器中逐行浏览他的代码,那么console.log()会输出正确的值.

这个奇怪的现象是否有解释,还是仅仅是Google Chrome的错误?

编辑:

我已经缩小了重现不一致console.log()行为的步骤:

如果您将此脚本添加到您的页面:

var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);
Run Code Online (Sandbox Code Playgroud)

并在Chrome 控制台窗口已打开的情况下在新窗口中打开它,然后console.log()输出将与在控制台窗口关闭时加载页面的输出不同.这是一个证明这一点的JSFiddle. …

javascript google-chrome google-chrome-devtools console.log

45
推荐指数
2
解决办法
9047
查看次数