我想在外部javascript文件中声明一个全局变量,并在加载文件的主窗口中访问它。
到目前为止,以下方法失败
var foo = 'bar';
window.foo = 'bar';
只有隐式全局变量似乎可以正常工作
foo = 'bar';
然而,人们似乎建议不要使用隐式全局变量。那么在这种情况下该怎么做呢?
答案 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();
我稍后会对此进行调查。因为我感兴趣的是我的代码的哪一部分导致了这一点。