gpt4 book ai didi

javascript - 在函数定义中添加 array = [ ] 时出现意外效果

转载 作者:行者123 更新时间:2023-12-02 14:24:09 26 4
gpt4 key购买 nike

我很困惑为什么出现以下两个版本的test函数产生不同的结果:

var arr = [1, 2, 3, 4, 5];

var test1 = function(array) {
array = [];
array[0] = 5;
}

var test2 = function(array) {
array[0] = 5;
}

test1(arr);
console.log(arr);
test2(arr);
console.log(arr);

test1无法更改 arr 的内容,而test2作品。显然这是 array=[] 的效果。但我不知道为什么会这样!

最佳答案

test2() 中,您正在修改传入的数组,因此您会看到预期的行为。

test1() 中,您将一个全新的数组分配给函数的 array 参数变量(覆盖对 arr 的引用),然后您正在修改该新数组。

更多信息...

这将有助于理解“通过引用传递”的含义。

当您将数组传递给函数时,您正在传递对该数组的“引用”。因此,您可以修改该数组(通过该引用),并且您将能够看到函数外部的更改。但是,您在 test1() 中所做的是使用对新数组的引用覆盖您的引用,并且因为您没有从函数返回该新引用,所以您将无法看到函数外部的新数组。

下面是一个示例,您可以将新数组分配回 arr:

var arr=[1,2,3,4,5];
function test3(array) {
array = []; // "array" is now a new, empty array
return array; // return the new array
}
arr = test3(arr); // assign the result of test3 back to arr
console.log(arr); // "[]"

关于javascript - 在函数定义中添加 array = [ ] 时出现意外效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417755/

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