一尘不染

Node.js变量声明和作用域

javascript

当我在node.js中键入时,我得到了undefined

var testContext = 15;
function testFunction() {
  console.log(this.testContext);
}
testFunction();
=>undefined

如果没有var关键字,则通过(=> 15)。它可以在Chrome控制台中运行(带有和不带有var关键字)。


阅读 353

收藏
2020-05-01

共1个答案

一尘不染

使用时它在Node中不起作用,var因为它testContext当前模块本地变量
。您应该直接引用它:console.log(testContext);

不输入时var,发生的事情testContext现在 是整个Node进程中的全局变量

在Chrome浏览器(或其他任何浏览器中-我不确定oldIE …),无论您是否var在示例中使用,testContext
都将转到全局上下文 ,即window

顺便说一下,“全局上下文”是thisJS中函数调用的默认值。

2020-05-01