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')
我没有通过
检查代码