假设我具有这样的功能
function createMultiDimArray() {
let results = [];
let current = [];
for (let i = 1; i <= 10; i++) {
current.push(i);
if (i % 2 === 0) {
results.push(current);
current = [];
}
}
return results;
}
执行时
let arr = createMultiDimArray();
arr看起来像这样
[[1,2][3,4][5,6][7,8][9,10]]
我已经在多种浏览器中对其进行了测试,并且似乎可以使用。因此,显然push()正在创建传递给它的数组的副本,而不仅仅是使用引用,因为否则arr看起来会像这样(当函数结束时为current === [])
[[],[],[],[],[]]
我已经搜索了Internet,但是没有发现关于push()这种行为的任何信息。所以我的问题是:使用push()将一个数组复制到另一个数组是否安全?
答案 0 :(得分:4)
push
不会复制数组(或给出的任何参数)。
相反,线
current = [];
创建一个新的数组对象,并将其分配给数组引用current
。根据您的分析,我想您假设它会清空current
所引用的现有数组对象,但事实并非如此。
答案 1 :(得分:0)
否,在代码中,您使用results.push(current);
将值压入结果,然后使用current
创建新的current = [];
数组。因此,在每个偶数之后,您都会得到一组放入results
中的数字。