javascript - 将全局变量的引用传递给函数

标签 javascript global-variables parameter-passing

是否可以将指向全局变量的链接发送到 JavaScript 中的函数? This answer说不,但我不敢相信,没有解决方法。

我的意思是像下面这样的东西。它不起作用,但它应该解释我的意思:

var data_1;
var data_2;

fillValue(data_1,"First");
fillValue(data_2,"Second");

function fillValue(link2GlobalVar, value){
    link2GlobalVar = value;
}   

console.log(data_1);
console.log(data_2);

如果能在控制台输出就好了

First
Second

您知道将全局变量发送到函数并像这样在其中更改它们的技巧吗?

参见 Fiddle

最佳答案

JavaScript 不像其他语言那样有引用。当您执行 fillValue(data_1,"First"); 时,您将按值传递 data_1。因此,您无法更新 data_1,因为在该函数中您拥有的只是数据的副本

如果这些变量是全局,那么您可以按照链接答案的建议进行操作并传递变量名称:

fillValue("data_1", "First");
fillValue("data_2", "Second");

function fillValue(link2GlobalVar, value){
    window[link2GlobalVar] = value;
}

更新: 在 JavaScript 中,如果您传递一个对象 作为参数,那么 实际上是通过引用传递的。你可以尝试这样的事情:

var datas = {};

fillValue(datas, "data_1", ,"First");
fillValue(datas, "data_2", "Second");

function fillValue(obj, key, value){
    obj[key] = value;
}

关于javascript - 将全局变量的引用传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853504/

相关文章:

javascript - 使用 Javascript 和 http-equiv 进行重定向

javascript - 如何让HTML页面在所有浏览器上稳定运行?

Python 全局变量和局部变量

function - Julia - 将关键字参数传递给另一个函数?

python - 无法将参数传递给 XGBoost

javascript - 在 Morris Chart 上添加动画效果

Javascript 在大对象中查找嵌套键

c# - ASP.NET MVC 4 中的全局变量

c++ - CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS不涵盖全局变量

fortran - 在类型绑定(bind)的基本过程中将对象作为 Intent(inout) 传递