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

How does one declare a global variable from inside an external js file?

本文关键字:声明 全局变量 文件 js 外部      更新时间:2023-09-26

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

到目前为止,下列方法都失败了

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

似乎只有隐式全局变量才有效

foo = 'bar';

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

你的解决方案应该工作得很好,他们在全局作用域中定义了一个变量,但你必须确保在脚本实际使用它们之前包含定义这些变量的JavaScript文件。可能您忘记包含所有的脚本文件,或者您只是在代码中有其他错误(检查浏览器的控制台是否有错误,Firefox中为F12)。

也就是说,使用全局变量是一个不好的做法。它使你的代码难以测试,难以调试,你的全局变量可能与第三方javascript库中的全局变量重叠(如果你正在使用它们中的任何一个)。

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

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

注意:这个例子实际上工作得很好,但由于我的IIFE的一些内容,它没有为我工作,直到我使用foo.log();

稍后我将详细研究这个问题。