javascript - 为什么我的输入参数在这段代码中被修改了?

标签 javascript

为什么我的输入参数是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/

相关文章:

javascript - jQuery:如何获取动态生成元素的ID?

Javascript 函数没有返回值

javascript - 如何验证具有多个相同名称的动态添加输入?

javascript - Controller 内的 Angular 位置固定( Angular 模态?)

javascript - x++和++x有什么区别

javascript - 使用javascript读取和写入外部文件?

javascript - 如何在 MongoDB 对象的每个嵌套数组中添加额外的元素?

javascript - 调用外部阈值的 intersectionObserver 回调

javascript - 使用 chrome.storage.local.get 获取值并将其分配给变量

javascript - 图片的 Blob URL