gpt4 book ai didi

JavaScript 全局变量 - 方法处理

转载 作者:行者123 更新时间:2023-11-30 23:41:56 25 4
gpt4 key购买 nike

我有多个全局数组,单个方法对其执行操作。该方法一次只需要对一个数组进行操作。我想通过将参数传递给该方法来完成此操作,然后让该方法根据该参数决定需要修改哪个数组。例如,

var globalarray1;
var globalarray2;

Operate(globalarray1);

function Operate(globalarray){
globalarray.push("test");
}

当然,上面的代码仅更改方法范围内的本地数组的值。我知道我可以做这样的事情:

var globalarray1;
var globalarray2;

Operate(1);

function Operate(flag){
if (flag == 1){
globalarray1.push("test1");
}
else if (flag == 2){
globalarray2.push("test2")
}
}

但是,感觉不太对劲。如何在单个方法中使用参数来更改全局变量的值,而不使用一堆条件语句?

最佳答案

您的第一种方法是正确的。然而,这个声明不是:

Of course, the code above only changes the value of the array local to the scope of the method.

数组对象 通过引用传递 通过共享调用(即引用通过值传递,而不是值本身)。当您将数组传递给方法时,它可以(在您的情况下)实际上修改了全局变量。如果您传入不可变或原始值(例如数字或字符串),情况就不会如此。在这些情况下,该值实际上是方法范围内的本地值。

您的变量是全局的这一事实与此无关。以这段代码为例:

function Hello(){
var localArray = [];
Operate(localArray);

// now, localArray has been modified by Operate
}

Hello();

上面,localArray不是全局变量,但是如果直接传入数组,它仍然会受到Operate()的影响。

关于JavaScript 全局变量 - 方法处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317100/

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