Javascript Node.js控制台中无法识别全局变量范围

Javascript Node.js控制台中无法识别全局变量范围,javascript,node.js,scope,console,strict,Javascript,Node.js,Scope,Console,Strict,因此,在浏览器(chrome)中,如果我在js控制台中运行此代码,函数调用foo();将数字2打印到控制台。但是如果我在node.js中运行它,函数调用foo()会打印未定义的内容。为什么会这样?节点是否在“严格模式”下自动运行代码 function foo() { console.log(this.a); } var a = 2; foo(); 如报告中所述 var Node.js模块中的某些内容将位于该模块的本地 所以,情况会有所不同 您也可以尝试: functi

因此,在浏览器(chrome)中,如果我在js控制台中运行此代码,函数调用foo();将数字2打印到控制台。但是如果我在node.js中运行它,函数调用foo()会打印未定义的内容。为什么会这样?节点是否在“严格模式”下自动运行代码

function foo() {     
   console.log(this.a); 
} 

var a = 2; 

foo();
如报告中所述

var Node.js模块中的某些内容将位于该模块的本地

所以,情况会有所不同

您也可以尝试:

function foo() {     
   console.log(this.a); 
} 
global.a = 2; 

foo();

我在Node.js REPL中尝试过,它确实打印了2Ah。在REPL中,它起作用了。但是,通过在终端上键入“node foo.js”来运行名为foo.js的代码文件会打印未定义的内容。想知道为什么会这样回答它。谢谢czheo!