首页 > 解决方案 > 如何在 jQuery 的文档就绪函数中使用模块中的(全局)变量?

问题描述

根据 SO question Global javascript variable inside document.ready,我应该能够在 jQuery 的文档就绪函数中使用全局变量。当我的变量在模块中声明时,我该如何做同样的事情?

<script type="module">
        import settings from './config/settings.js';
        var DAPP_VERSION = settings.version;
</script>
<script type="text/javascript">
var OTHER = 4;
</script>
<script type="text/javascript">
        $(document).ready(function() {
        console.log(OTHER);
        console.log(DAPP_VERSION);
    }); 
</script>

以上给了我:

未捕获的 ReferenceError:未定义 DAPP_VERSION

config/setting.js包含:

export default {
    version: "1.1",
    rounds: 3,
    cars: 20,   
    lapLenght: "short"
}

标签: javascriptasch-development

解决方案


当您使用type="module"声明时,变量不会自动附加到全局范围,而是附加到模块范围(这是不同的)。

您必须将它们显式附加到窗口以避免歧义并使它们在整个应用程序中可见。

window.DAPP_VERSION = settings.version;

http://jsfiddle.net/R6FNs/572/


推荐阅读