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();