小智 81

要设置全局变量,请使用global而不是window.

global["myvar"] = value
Run Code Online (Sandbox Code Playgroud)

  • 但是请注意,使用Node的"global"应该谨慎地完成.如果还有其他方法可以在模块之间共享数据,请使用它.特别是,如果您发现自己需要使用Cluster或其他在处理器之间分发应用程序的方式,那么使用`global`将会崩溃,因为它不会在子进程之间共享. (13认同)
  • @squint我理解,不是分享我自己的困惑,而是解释为什么@Matrix感到困惑.在他的具体案例中,他并没有看到"窗口"和"全局"等同的东西,所以说它们完全不相同. (4认同)
  • 不行 !`var foo = 42; 控制台日志(全局。foo);//返回未定义...` (3认同)
  • @spex:它在节点和浏览器中的工作方式相同。在这两种情况下,如果你在全局环境中执行 `var foo = 42`,你将能够访问 `foo` 作为全局对象的属性,即浏览器中的 `window` 和 NodeJS 中的 `global` . 但是,如果您在 *module* 中执行 `var foo = 42`,则您不在全局环境中;你在一个函数里面。无论如何,问题不在于使用 `var` 来创建变量;它是关于如何直接在全局对象上创建属性。 (3认同)