为什么我的输入参数是inArr
当我更新局部变量 arr
时被修改在下面的 JavaScript 代码中?
function test(inArr) {
var arr = inArr;
for (let i = 0; i < 3; i++) {
arr.push(i);
console.log( "arr = ", arr, "inArr = ", inArr );
}
}
test([]);
输出:
arr = [ 0 ] inArr = [ 0 ]
arr = [ 0, 1 ] inArr = [ 0, 1 ]
arr = [ 0, 1, 2 ] inArr = [ 0, 1, 2 ]
最佳答案
JavaScript 数组是通过引用分配的,因此当您进行分配时,两个变量都指向内存中的同一个数组。对其中之一的任何改变也会改变另一个。
您可以使用扩展运算符使用这些值创建一个新数组:
var arr = [...inArray];
关于javascript - 为什么我的输入参数在这段代码中被修改了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60176654/