我想知道是否可以通过名称将JavaScript中的全局变量传递给函数?如何将全局变量传递给util函数
在我的使用案例中,我有两个全局变量abc
和xyz
。当调用function1()
时,我会进行一次AJAX调用,并希望将该响应用于某些工作并将值赋予变量abc
。 function2()
和变量xyz
存在相同的功能。所以我想提取这个assignValueToVariable()
函数,并使其成为一种实用方法。
但问题是,如果我像function2()
那样传递全局变量名,那么全局范围内的xyz
总是未定义的。我该如何做这项工作,以便我可以在function1()
和function2()
中使用相同的assignValueToVariable()
方法?
HTML
<button type="button" onclick="otherfunction();">Click Me</button>
的JavaScript
var abc,
xyz;
function1();
function2();
function function1() {
//ajax call - get data and pass it to function
data = "123";
// this works. Since I'm directly refering global variable in the function
assignValueToVariableABC(data);
}
function function2() {
//ajax call - get data;
data = "456";
// this doesn't set the value to global variable
assignValueToVariable(xyz, data);
}
function otherfunction() {
//xyz is undefined here
console.log(abc + "--" + xyz);
}
function assignValueToVariable(varName, data) {
//assign value from data to variable
varName = data;
}
function assignValueToVariableABC() {
//assign value from data to variable
abc = data;
}
这是不可能的。这是因为JavaScript总是按价值传递,而不是通过引用传递。所以全局变量的值不会超出范围。 – DinoMyte
您可以结帐[我对这个问题的回答](http://stackoverflow.com/a/26020014/2324107)。在你的情况下,你需要传递一个字符串'assignValueToVariable('xyz',data);'然后做'window [varName] = data'。但正如我的答案所述,它不被推荐......为什么不简单地'xyz = data'? –
如果你真的想要全局变量,为什么不只是'abc = data;'和'xyz = data;'?这里没有太多可以抽象的东西。 –