【问题标题】:Make variable accessible like window使变量像窗口一样可访问
【发布时间】:2015-10-01 16:59:41
【问题描述】:

假设我在index.html 中有一个变量var car = 'VW'

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 谢谢

【问题讨论】:

  • 这与 node.js 有什么关系?
  • 我同意,这看起来像是一个commonJS 问题。
  • 撤回我的关闭,同意 cmets - 如果我很高兴,请道歉。
  • 无论如何,我认为除了将全局变量附加到全局对象(在浏览器上为window)之外,没有其他方法可以注册全局变量

标签: javascript node.js scope


【解决方案1】:

在浏览器上下文中,“全局”变量实际上是window 对象的属性,它充当全局上下文。您在问题中使用的语法,即 HTML 页面中脚本标记中的 var 语句,实际上会将 var 名称作为属性添加到窗口中。但是,由于您在这里使用的是看起来像 CommonJS require 的语句,大多数浏览器本身并不支持该语句,因此您的问题中可能没有包含一个编译步骤,这会阻止它按您期望的方式工作。

但是,简短的回答是,如果可以避免,不要这样做。全局变量的大多数应用都可以通过参数更好地完成,例如Initializer.check_requirements(car);,或在单独的模块中存储配置设置,或其他方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2022-01-25
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多