gpt4 book ai didi

javascript - 在函数内设置全局变量

转载 作者:行者123 更新时间:2023-11-30 17:07:41 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,它将动态设置作为参数传递的任何全局变量的值。它不起作用,我想找出原因。有人可以解释为什么这不起作用:

var things = 5;

function setup(variable) {
variable = 7;
}

setup(things);

console.log(things); //should return 7. returns 5 instead. the function had no effect on the global variable

这也行不通:

var things = 5;

function setup(variable) {
window.variable = 7;
}

setup(things);

console.log(things); //should return 7, but returns 5. still not accessing the global variable.

但这确实:

var things = 5;

function setup(variable) {
window[variable] = 7;
}

setup("things");

console.log(things); //returns 7

我怀疑正在发生的事情是参数 variable 被设置为函数内部的局部变量,因此任何更改只发生在本地版本上。但这看起来很奇怪,因为传递的参数是一个全局变量。有人可以向我解释发生了什么以及如何更好地编写这段代码吗?这是否需要一个方法(然后可以使用 this 访问原始对象)?

谢谢!!

最佳答案

Javascript 是按值传递的。 (对象、数组和其他非基本类型通过引用值传递。)这意味着变量(或引用)的值被传递给函数,但函数参数不会成为实际值的别名争论。因此,您不能在不引用变量的情况下更改函数外部的变量(就像您在上一个示例中所做的那样)。

参见 this answer in another thread获取更多信息。

关于javascript - 在函数内设置全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641524/

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