访问全局范围中的JS函数

时间:2014-09-24 16:59:34

标签: javascript

我已在全局范围内找到的函数中定义了一个变量。我可以通过foo()访问我的函数window.foo。我想知道如何在data内修改foo()的内容?我试过去window.foo.data,但我收到了undefined消息。

<script>
    function foo() {
        data =  {
            one : '1',
            two : '2'
        }
    }
</script>

2 个答案:

答案 0 :(得分:2)

在您的示例中,您需要做的只是调用 foo(),它将设置全局变量data。在此之后,您只需使用data

即可访问它

&#13;
&#13;
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;
&#13;
&#13;

话虽如此,我建议你重新编写代码。使用随机变量污染全局范围是非常不可取的。相反,您应该在您想要使用它的公共范围内声明变量data。实际上,如果data必须可以从任何地方访问,那么您应该为它创建一个命名空间。

这可能是XY problem的一个例子。如果你准确地解释了你想要完成的事情,我们可能会提出一个更好的解决方案。

答案 1 :(得分:0)

您正在将data视为foo的属性。但是,它实际上是一个全局变量。在执行foo之前,data不存在。 执行foo()之后,data是一个完全未与foo无关的全局值。