Javascript 如何使用模板从一个IIFE中访问另一个IIFE中的变量?

Javascript 如何使用模板从一个IIFE中访问另一个IIFE中的变量?,javascript,html,templates,iife,Javascript,Html,Templates,Iife,base.html文件中有一些逻辑。我想让它对应的js文件更简单,并把一些函数放在一边 有没有办法从另一个(additional.js)访问一个(main.js)中的变量 base.html <body> <script src="main.js"></script> {% block extra_scripts %} {% endblock %} </body> {% extends "base.html" %} {%

base.html
文件中有一些逻辑。我想让它对应的
js
文件更简单,并把一些函数放在一边

有没有办法从另一个(
additional.js
)访问一个(
main.js
)中的变量

base.html

<body>
    <script src="main.js"></script>
    {% block extra_scripts %}
    {% endblock %}
</body>
{% extends "base.html" %}
{% block extra_scripts %}
    <script src="additional.js"></script>   
{% endblock %}
extension.html

<body>
    <script src="main.js"></script>
    {% block extra_scripts %}
    {% endblock %}
</body>
{% extends "base.html" %}
{% block extra_scripts %}
    <script src="additional.js"></script>   
{% endblock %}

这使我无法定义。

函数中定义的变量仅在该函数中有作用域,不能在外部访问


您可以全局声明变量
test

函数内部定义的变量仅在该函数中具有作用域,不能在外部访问


您可以全局声明变量
test

一种方法是在外部声明变量,并使其全局化,以便其他函数可以访问

var test;
(function(){
    test = 123;
})();
现在,什么时候

(function(){
    alert(test);
})();

运行
测试
在范围内,因此可以访问。但是,需要维护顺序,否则测试将是未定义的,因为它尚未定义。

一种方法是在外部声明变量,并使其成为全局变量,以便其他函数可以访问

var test;
(function(){
    test = 123;
})();
现在,什么时候

(function(){
    alert(test);
})();

运行
测试
在范围内,因此可以访问。但是,需要维护顺序,否则测试将是未定义的,因为它尚未定义。

在功能级别范围内的变量不能在外部访问。可以在外部定义变量,也可以将其添加到窗口对象中以便访问

main.js 附加.js
无法在外部访问作用域位于函数级别的变量。可以在外部定义变量,也可以将其添加到窗口对象中以便访问

main.js 附加.js
如果你把它转换成js模块,你就可以做到

var mainModule = (function(){
    var test = 123;

    return {
       getTest: function() { return test;}
    }
})();
然后在additional.js中

mainModule.getTest();

如果你把它转换成js模块,你就可以做到

var mainModule = (function(){
    var test = 123;

    return {
       getTest: function() { return test;}
    }
})();
然后在additional.js中

mainModule.getTest();