首页 > 解决方案 > 为什么我的输入参数在此代码段中被修改?

问题描述

当我在下面的 JavaScript 代码中inArr更新局部变量时,为什么我的输入参数被修改了?arr

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

解决方案


JavaScript 数组是通过引用分配的,因此当您进行分配时,两个变量都指向内存中的同一个数组。对一个的任何改变也会改变另一个。

您可以使用扩展运算符创建具有这些值的新数组:

var arr = [...inArray];

推荐阅读