假设我在 index.html
中有一个变量 var car = 'VW'
index.html
是我的应用程序的绑定(bind),从那里我访问多个模块:
<script>
var car = 'VW';
var Initializer = require('./js/initializer');
Initializer.check_requirements();
</script>
现在在初始化程序
中,我尝试访问此变量,但不起作用。
var Initializer = {
check_requirements: function(){console.log(car)};
};
module.exports = Initializer;
但是,当我将变量 car
附加到 window
时:
window.car = 'VW';
然后我就可以通过 window.car
在我的模块中访问它;
如何创建一个全局变量car
,我也可以在我的模块中访问该变量,这样我就不必附加到window
?
谢谢
最佳答案
在浏览器上下文中,“全局”变量实际上是充当全局上下文的 window
对象的属性。您问题中的语法(HTML 页面中脚本标记中的裸 var
语句)实际上会将该 var
名称作为属性添加到窗口中。但是,由于您在这里使用的看起来像 CommonJS require
语句,而大多数浏览器本身并不支持该语句,因此您的问题中可能没有包含一个编译步骤,导致此问题无法正常工作正如您所期望的那样。
但是,简短的答案是,如果可以避免的话,不要这样做。全局变量的大多数应用都可以通过参数更好地完成,例如Initializer.check_requirements(car);
,或在存储配置设置的单独模块中,或其他方法。
关于javascript - 使变量像窗口一样可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892980/