【发布时间】:2019-04-17 19:49:47
【问题描述】:
在下面的示例中,第一次应该打印出 false,但之后应该将其更改为 true。但它保持最初分配的值。
var i = {
control: {
a: false,
b: false,
}
}
var test = i.control['a'];
setInterval(function () {
document.body.innerHTML += test + ', ';
i.control['a'] = true;
}, 500);
我希望能够从外部更新变量,但循环需要能够检查变量设置的内容(可以是该对象中的任何值,并将在初始化时设置)。
我这样做是为了保持代码干净,并且不必在每个循环中创建一个新变量来获取/存储最新值。
【问题讨论】:
-
你不能。 JavaScript 中没有“对变量的引用”(有一些边缘情况作为例外,但没有任何东西可以作为参数传递给函数)。为什么不直接写
document.body.innerHTML += i.control['a'] + ', ';?你想解决什么问题? -
是的,这确实解决了我的问题,我基本上只是想让代码更易于阅读和编写,因为在我的真实代码中,测试变量要长一些,而我没有我不想每次都输入整个内容,我希望它一眼就能理解,这样添加它的人就不必进行大量的复制粘贴。
-
JavaScript 总是pass by value,所以改变变量的值永远不会改变底层的原语。
var存储指针,因此它通过指针的值传递。 -
@stackers 将
return i.control['a']放入一个函数中,如果你需要多次调用它 -
我认为你是对的,一个函数可能是要走的路,而且很干净:test('a')
标签: javascript loops object variables reference