全局变量NOT working -节点14.15.3


var myVariable = 3;
console.log('global', globalThis.myVariable);

我尝试使用node file.js运行代码,但不断得到的结果:

全球定义

谁能给我解释一下这到底是怎么回事?

我从Node文档中找到了这个:

在浏览器中,顶级作用域是全局作用域。这意味着在浏览器变量中,某些东西将定义一个新的全局变量。在Node.js中,这是不同的。顶级作用域不是全局作用域;在Node.js模块中的var值将是该模块的本地值。

和全局对象

在JavaScript中,总是定义了一个全局对象。在web浏览器中,当脚本创建用var关键字定义的全局变量时,它们被创建为全局对象的成员。(在Node.js中不是这样的。)

这意味着当您声明var myVariable = 3;时,它不会进入节点global对象,您可以尝试打印global对象。

尝试为globalThis变量赋值

globalThis.myVariable = 3;
console.log('global', globalThis.myVariable);

在Node Js的作用域中,任何在模块(特定Js文件)根目录中声明的变量都是模块级变量。

var test = 'This string is global to this module';
function foo() {
console.log(test);
}

Node Js也有全局命名空间对象。

该对象可在任何模块中访问。

global.test = 'This string iscan be accessed by any module via the gloabl namespace object';
function foo() {
console.log(global.test);
}
var global.myVariable = 3;
console.log('myVariable')

我没有通过

检查代码

相关内容

最新更新