gpt4 book ai didi

javascript - 在函数内为现有数组(全局变量)分配新值不起作用。为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:21:36 25 4
gpt4 key购买 nike

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

//下面的函数 1 为数组分配一个全新的值,不起作用

function changeArray(array) {
array = ["A", "B", "C"];
};

//函数 2,它只是修改数组中的一个元素,确实有效

function addArray(array) {
array.push(6);
}

**//如果我在 array1 上运行函数一(changeArray)然后尝试打印 array1,它保持不变。但是,运行函数 2 (addArray) 确实会将另一个元素“6”添加到数组中。我错过了什么?

最佳答案

您正在为标识为“数组”的上下文命名空间位置分配一个新值。您应该将调用视为:

function changeArray() {
var thisNamespace = {}; // Not a real variable
thisNamespace["array"] = arguments[0];
// ...
thisNamespace["array"] = ["A", "B", "C"];
}

我希望很清楚这不会替换原始参数,但您仍然可以修改数组,因为这不是赋值。如果您真的想通过函数进行赋值,您应该使用它的返回值或闭包。

function foo(bar) {
return ["A", "B"];
}
var x = ["C"];
x = foo(x);

或者:

function foo(baz) {
baz(["A", "B"]);
}
var x = ["C"];
foo(function(bar) {
x = bar;
});

关于javascript - 在函数内为现有数组(全局变量)分配新值不起作用。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564332/

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