繁体   English   中英

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

[英]How to access variables inside one IIFE from another using templates?

base.html文件中有一些逻辑。 我想简化其对应的js文件,并将一些功能放在一边。

是否有访问一个内部变量的方式IIFEmain.js从另一个() additional.js )?

base.html

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

main.js

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

extension.html

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

Additional.js

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

这个解决方案给了我不确定的东西。

如果将其转换为js模块,则可以执行此操作。

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

    return {
       getTest: function() { return test;}
    }
})();

然后在Additional.js中

mainModule.getTest();

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

您可以全局声明变量test

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

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

现在,当

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

运行test在范围内,因此可以访问。 但是,需要维护订单,否则测试将是undefined ,因为尚未定义。

在函数级别范围内的变量不能在外部访问。 在外部定义变量或将其添加到window对象以进行访问。

main.js

(function(){
    window.test = 123;
})();

Additional.js

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM