我运行了以下 JS 代码。控制台打印一个空数组。
function xyz(){
var a=[]; var b=[];
console.log(a);
for(i=0;i<10;i++){
b.push(i);
}
a=b;
}
function xyz(){
var a=[];
console.log(a);
for(i=0;i<10;i++){
a.push(i);
}
}
控制台打印从 0 到 9 的数组。另外,我在这里看到,即使控制台语句位于我们将值推送到数组中的 for 循环之上,但控制台仍然在打印,但不是在第一个中打印案例(我认为是因为控制台打印的引用为空)。代码在 Chrome 浏览器控制台上进行了测试。
最佳答案
function xyz(){
var a=[];
console.log(a);
for(var i=0;i<10;i++){
a.push(i);
}
}
xyz();
当我们在 Chrome 控制台中看到它时,它有一个空数组,但是当我们展开它时,它也显示带有 length 属性的数组值。
你需要密切注意那里,有一个i
(信息),上面写着,它刚刚被评估。
这意味着,chrome 控制台会获取对数组的实时引用,并在 console.log()
上显示 length
属性等于 0 的空白数组,同时还会添加实时引用到该数组,因此在展开时我们看到数组
在代码中更新数组后,您需要使用 console.log()
才能正常工作。
function xyz(){
var a=[];
for(i=0;i<10;i++){
a.push(i); //array is updating here
}
console.log(a);
}
xyz();
关于javascript - 为什么即使在控制台语句之后更新了数组,console.log 也会打印数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036667/