gpt4 book ai didi

javascript - 通过引用传递函数

转载 作者:行者123 更新时间:2023-12-01 04:09:52 25 4
gpt4 key购买 nike

我运行下面的代码后,为什么myArray仍然是[2,3,4,5],为什么它没有变成[]?

var myArray = [2, 3, 4, 5];
function doStuff(arr) {
arr = [];
}

doStuff(myArray);

但是,当我执行以下步骤时,myArray 确实更改为 [2, 3, 4, 5, 6]

var myArray = [2, 3, 4, 5];
function doStuff(arr) {
arr.push(6);
}

doStuff(myArray);

我对此感到非常困惑。

最佳答案

arr 是一个局部变量

function doStuff(arr) {
arr = [];
}

arr = [];将一个全新的对象分配给arr,以便它不再指向传递的数组。由于函数返回时局部变量 arr 超出范围,因此该赋值无效。它当然不会影响调用者作用域中的非局部变量 myArray

另一方面,第二个函数:

function doStuff(arr) {
arr.push(6);
}

实际上对传递的数组执行一些操作,调用 arr 命名的对象上的 push 方法。请注意,arr 并未在函数体内重新定义,因此它永远不会丢失其作为传递数组的名称的身份。

关于javascript - 通过引用传递函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41577868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com