javascript - 数组拼接和console.log

标签 javascript

<分区>

当我在 javascript 中对数组执行操作时,console.log 显示数组在我对数组执行操作之前已经更改。我可以在 chrome 和 firefox 中重现这个。有谁知道这是为什么吗?

var myTabs = [[0,0,0],
              [0,0,0],
              [0,0,0],
              [0,0,0]];
console.log(myTabs);
myTabs[0].splice(1, 1);
console.log(myTabs);

查看代码:

https://jsfiddle.net/mxrh33t0/1/

最佳答案

当您在 Chrome 中展开记录的对象时,您是在展开对其的最后引用,不是该对象在记录时的副本。

在您的例子中,最后一次引用是在调用 splice() 方法之后对数组的引用。如果您想验证差异,则必须更具体地记录日志:

var myTabs = [[0,0,0],
              [0,0,0],
              [0,0,0],
              [0,0,0]];
console.log(myTabs[0].join(","));
myTabs[0].splice(1, 1);
console.log(myTabs[0].join(","));

如果你真的想看到更多,你可以扩展它。

关于javascript - 数组拼接和console.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48285492/

相关文章:

javascript - 试图找到一种方法在 Shopify 中仅显示一次脚本部分。

javascript - 如何从部分加载的 aspx 页面的代码隐藏中调用 javascript 函数

javascript - 如何根据内容大小动态调整或调整div的背景图片

javascript - 使用 .attr() 更改图像不起作用

javascript - 使用javascript如何从USB移动设备打开图像

javascript - Python BeautifulSoup - 抓取 Google 财经历史数据

javascript - 在现有游戏的 UI 层使用 AngularJS

javascript - 如何在当前网页上创建和显示自己设计的窗口而不是弹出窗口?

javascript - 检查 TestCafe 装置中失败的 http 请求

javascript - vue-test-utils - 如何处理 $refs?