javascript - 使变量像窗口一样可访问

标签 javascript node.js scope

假设我在 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/

相关文章:

java - 错误 : cannot find symbol—Can't access another class's public field

javascript - 流(类型)不尊重我对类属性所做的手动检查

node.js - 使用 node.js 将目录中的所有文件移动到父级

node.js - 如何在不使用 unwind 的情况下使用 mongodb 中的数组元素对数据进行排序

javascript - 调用工厂方法时出现 Angularjs 错误

c++ - 范围与变量的生命周期

javascript - 通过 ajax 调用加载新图像的 jquery 回调

javascript - 谷歌地图在点击时加载默认和不同的位置

javascript - 如何列出我使用 Json 选择的品牌型号?

javascript - 使用 Node JS 从浏览器的用户输入中检索 twitter