我已在全局范围内找到的函数中定义了一个变量。我可以通过foo()
访问我的函数window.foo
。我想知道如何在data
内修改foo()
的内容?我试过去window.foo.data
,但我收到了undefined
消息。
<script>
function foo() {
data = {
one : '1',
two : '2'
}
}
</script>
答案 0 :(得分:2)
在您的示例中,您需要做的只是调用 foo()
,它将设置全局变量data
。在此之后,您只需使用data
:
function foo() {
data = {
one : '1',
two : '2'
}
}
// At this point here, data does not exist since foo() has not been run
foo(); // Will run foo() and set the global variable data
window.alert(data.one);
&#13;
话虽如此,我建议你重新编写代码。使用随机变量污染全局范围是非常不可取的。相反,您应该在您想要使用它的公共范围内声明变量data
。实际上,如果data
必须可以从任何地方访问,那么您应该为它创建一个命名空间。
这可能是XY problem的一个例子。如果你准确地解释了你想要完成的事情,我们可能会提出一个更好的解决方案。
答案 1 :(得分:0)
您正在将data
视为foo
的属性。但是,它实际上是一个全局变量。在执行foo
之前,data
不存在。 在执行foo()
之后,data
是一个完全未与foo
无关的全局值。