gpt4 book ai didi

javascript - 如何在浏览器中访问 Node.js 中的模块全局变量(如 window.variable)

转载 作者:行者123 更新时间:2023-12-03 07:23:10 25 4
gpt4 key购买 nike

这是一些代码

// 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 变量,但这不是我需要的,因为我想要本地全局到当前模块,而不是整个 Node 应用程序

最佳答案

here is some code

// app.js
let foo = 3;
let bar = 35;

in the browser i could do window.foo and i will get my 3

在使用正确实现 let 的 JavaScript 引擎的浏览器中不行。 let 创建一个全局变量,但不是全局对象的属性。这是ES2015中的一个新概念。 (constclass 也是如此。)但是如果您使用 var 而不是 let,是的,它会在浏览器中显示为全局对象(您可以作为窗口访问)的属性。

How to access module global varibales in Node.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 global ,但当然通常最好避免全局变量。

关于javascript - 如何在浏览器中访问 Node.js 中的模块全局变量(如 window.variable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36113988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com