如何在 Node 中访问模块全局变量.js例如浏览器中的 window.variable
How to access module global varibales in Node.js like window.variable in the browser
这是一些代码
// app.js
let foo = 3;
let bar = 35;
在浏览器中,我可以做window.foo
,我会得到我的3
,如果我做window.bank = 'lalala'
它会和我写的一样
let foo = 3;
let bar = 35;
let bank = 'lalala'
我在 Node.js 中需要同样的东西,该对象引用模块的全局范围。我知道global
变量,但这不是我需要的,因为我想本地全局到当前模块,而不是整个节点应用程序
这是一些代码
// app.js let foo = 3; let bar = 35;
在浏览器中,我可以做 window.foo,我会得到我的 3
不是在使用 JavaScript 引擎的浏览器中正确实现let
你不会。 let
创建全局变量,但不创建全局对象的属性。这是ES2015中的一个新概念。(const
和class
也是如此。但是如果你使用var
而不是let
,是的,它会在浏览器中显示为全局对象的属性(您可以window
访问)。
如何在节点中访问模块全局变量.js
没有内置机制。NodeJS 在模块作用域函数中运行您的代码,因此您在该代码的顶层声明的变量不是全局变量,也不会自动添加到任何可访问的对象中。
如果您希望在对象上访问它们,则需要显式使用对象:
let locals = { // or even `const locals = {` since you won't change the object, just its properties
foo: 3,
bar: 35
};
(在松散模式下,可以在没有明确引用locals
的情况下使用它们,但我建议始终使用严格模式,并建议即使您处于松散模式,也建议不要使用所述机制(备受诟病的with
语句)。 with
被诟病严重,并且在严格模式下被禁用是有原因的。:-)我提到它只是为了完整。
对于真正的全局变量,你可以使用 NodeJS 的全局global
,但当然通常最好避免全局变量。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 禁用(而不是隐藏)浏览器滚动条
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 是否可以在浏览器中使用纯JavaScript保存音频流
- jQuery检测浏览器是否支持Zoom
- 如何在 Node 中访问模块全局变量.js例如浏览器中的 window.variable