如何从外部js文件中声明全局变量?

时间:2016-07-05 08:47:57

标签: javascript globals

我想在外部javascript文件中声明一个全局变量,并在加载文件的主窗口中访问它。

到目前为止,以下方法失败

var foo = 'bar';
window.foo = 'bar';

只有隐式全局变量似乎可以正常工作

foo = 'bar';

然而,人们似乎建议不要使用隐式全局变量。那么在这种情况下该怎么做呢?

2 个答案:

答案 0 :(得分:0)

您的解决方案都应该正常工作,它们在全局范围内定义变量,但您必须确保在实际使用它们的脚本之前包含定义这些变量的JavaScript文件。可能您忘记包含所有脚本文件,或者您只是在代码中有其他错误(请在浏览器的控制台中查看错误,在Firefox中使用F12)。

那说无论如何都要使用全局变量。它使您的代码难以测试,难以调试,并且您的全局变量可能与来自第三方JavaScript库的全局变量重叠(如果您使用其中任何一个)。

答案 1 :(得分:0)

问题在于我将IIFE附加到窗口,然后通过窗口而不是直接调用它。

window.foo = (function() {
    return {
        log: function() {
            console.log('bar function');
        }
    };
})();
window.foo.log();

注意:此示例实际上工作正常,但由于我的IIFE的某些内容,在我仅使用foo.log();

调用它之前它不适用于我

我稍后会对此进行调查。因为我感兴趣的是我的代码的哪一部分导致了这一点。