我有下面几个JavaScript文件:
const { testFunc2 } = require("./TestFunction");
function home(val){
global.context={};
global.context.val = val;
}
home(3);
testFunc2();
//homeFunction.js
下面是TestFunction.js
:
exports.testFunc2=()=>{
console.log(context.val);
}
这段代码打印3作为输出,即使我没有在testFunc 2中将global
放在context
之前。这实际上是如何工作的?我的猜测是node在局部范围内查找一个名为context的变量,如果它无法找到它,它将移动到全局范围。这是正确的吗?
谢谢!
1条答案
按热度按时间hgb9j2n61#
是的,显式
global
对象是Node JS特有的特性它是一个在Node JS程序中的所有模块之间共享的对象,即使你不觉得你正在积极地做任何事情来引起共享(正如你所说的)。
如果没有名为
context
的局部变量,则对context
的引用福尔斯到全局变量context
,该变量是使用global.context=
写入的。在某种程度上,这类似于在浏览器中写入
window.xyz
,然后导入一个试图读取xyz
的模块。