假设我在var car = 'VW'
index.html
index.html
是我的应用程序的绑定,从那里我访问了几个模块:
<script>
var car = 'VW';
var Initializer = require('./js/initializer');
Initializer.check_requirements();
</script>
现在在initializer
我尝试访问此变量,但不起作用。
var Initializer = {
check_requirements: function(){console.log(car)};
};
module.exports = Initializer;
但是,当我将变量car
附加到window
时:
window.car = 'VW';
然后我可以通过window.car
;
如何创建我也可以在模块中访问的全局变量car
,这样我就不必附加到window
了?
感谢
答案 0 :(得分:2)
在浏览器环境中,&#34;全球&#34;变量实际上是window
对象的属性,它充当全局上下文。您在问题中使用的语法,即HTML页面中脚本标记中的var
语句,实际上会将var
名称作为属性添加到窗口中。但是,由于您在这里使用的是CommonJS require
语句,这在大多数浏览器中都不是原生支持的,因此可能是您在问题中未包含的编译步骤这阻止了它按照你期望的方式工作。
然而,简短的回答是,不要这样做如果可以避免的话。全局变量的大多数应用可以通过参数更好地完成,例如Initializer.check_requirements(car);
,或存储配置设置或其他方法的单独模块。