Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中存储对变量的引用?_Javascript_Loops_Object_Variables_Reference - Fatal编程技术网

如何在javascript中存储对变量的引用?

如何在javascript中存储对变量的引用?,javascript,loops,object,variables,reference,Javascript,Loops,Object,Variables,Reference,在下面的示例中,它应该第一次打印为false,但之后应该更改为true。但它保留最初指定的值 var i={ 控制:{ a:错, b:错, } } var测试=i.对照['a']; setInterval(函数(){ document.body.innerHTML+=test+','; i、 控件['a']=true; }, 500);您可以获取对象引用并获取值的最后一个键 var i={control:{a:false,b:false}, 试验=i.对照; setInterval(函数()

在下面的示例中,它应该第一次打印为false,但之后应该更改为true。但它保留最初指定的值

var i={
控制:{
a:错,
b:错,
}
}
var测试=i.对照['a'];
setInterval(函数(){
document.body.innerHTML+=test+',';
i、 控件['a']=true;

}, 500);您可以获取对象引用并获取值的最后一个键

var i={control:{a:false,b:false},
试验=i.对照;
setInterval(函数(){
document.body.innerHTML+=test.a+',';
i、 控制。a=真;

}, 500);我认为这在我的情况下不起作用,因为['a']也需要分配给该变量,因为它可能是任何其他值,比如['b'],您的用例非常不清楚。你到底想做什么?我只是想通过编辑控件对象使代码更易于编写和更新。我可以硬编码test的值,我只是在寻找一种更干净的方法。@stackers要么工作,要么替换
I.control.a
I.control['a']
这是相同的东西,我需要另一个变量,因为它可以是a或b,所以它最终将成为I.control[I.key.a]这已经比我希望你做的更复杂了。JavaScript中没有“对变量的引用”(有一些边缘情况作为例外,但没有任何内容可以作为参数传递给函数)。为什么不直接编写
document.body.innerHTML++=i.control['a']+','?你想解决什么问题?是的,这基本上解决了我的问题,我只是想让代码更易于阅读和编写,因为在我的实际代码中,测试变量要长一点,我不想每次都要键入整个内容,我希望它乍一看就容易理解,这样添加到它的人就不必总是做大量的复制粘贴.JavaScript,因此更改变量的值永远不会更改基础原语
var
存储指针以及它的pass-by指针值。@stackers的工作方法是将
返回i.control['a']
放在一个函数中,并调用它,如果您多次需要它,我认为您是对的,一个函数可能是可行的,而且它非常干净:test('a')