javascript - 为什么即使在控制台语句之后更新了数组,console.log 也会打印数组?

标签 javascript html arrays google-chrome reference

我运行了以下 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(信息),上面写着,它刚刚被评估。

enter image description here

这意味着,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/

相关文章:

jQuery:每次新的点击都会以不同的方式改变 CSS

html - 带填充增加宽度的固定 div

python 错误: too many indices for array

php - 迭代两个不同长度的 POST 数组,查找购买了 x,y,z 但未购买 x,y,x,z 的客户

html - 使用 Ul LI float 的画廊

php - 获取解码的 JSON 数据时不断收到 "Array"?

JavaScript:为什么我不能在没有 'this' 关键字的情况下从被调用者调用parentFunc.parentFunction()?

javascript - 将值从页面表单传递到 Shopify Liquid 中的 JavaScript

javascript - 无法根据 z 索引使 iframe 内容与相邻的 div 重叠

javascript - 返回导出模块的最佳方法