javascript - 为什么数组会将一个空数组推入另一个数组?
问题描述
为什么array2
[[], [], [], [], []]
循环结束时的值?
var array1 = [];
var array2 = [];
for (let i = 1; i <= 10; i++) {
array1.push(i);
if (i % 2 === 0) {
//console.log(array1);
array2.push(array1);
array1.length = 0;
};
};
console.log(array1);
console.log(array2);
谁能解释一下,这段代码发生了什么?
解决方案
JavaScript 中的数组是可变结构。array1
每次都通过分配0
来清空length
. 1到10之间只有5个偶数(即:2、4、6、8、10),所以里面array2
有5个引用array1
。
推荐阅读
- python - 有没有一种方法/方式可以按照要求将文本数据保存到具有正确格式的 csv 列中?
- asp.net - 如何使用 Httpclientfactory Typed 客户端调用装饰有 ValidateAntiForgeryToken 的服务器 api?
- python - 使用数据框作为日期模型计算 3D 数组的每日平均值
- flutter - Flutter中有没有办法通过滑动逐渐导航到页面
- javascript - 检测并转移从 Inspector 注入的 Javascript
- postback - Grid 中的 ImageButton 不会触发回发,因此不会触发 rowcommand
- python - 使用 deepstack 构建用于图像二元分类的集成学习模型
- sql-server - EF Core 仅查询 DateTimeOffset 的 DateTime 无法翻译;
- python - 用于运行 Python 的 py.exe 的替代程序
- html - 为什么我的 box-shadow 不能正确重叠在这些 flex 孩子身上?