此关键字的节点js行为

时间:2017-08-31 19:08:19

标签: node.js

让我们来看看这个非常基本的program.js:

console.log(this);

这是输出:

$ nodejs program.js 
{}

现在,如果我在repl控制台中执行相同操作:

$ nodejs 
> console.log(this)

我在最后看到了未定义的事物记录。

为什么我们得不到相同的结果?

由于

1 个答案:

答案 0 :(得分:1)

您遇到两种不同的行为,因为您基本上是在两种不同的环境中执行代码。

在program.js中,this answer适用。您位于node.js模块中,因此thismodule.exports相同。

在node.js repl中,this answer适用。您不在node.js模块中;你在使用全局上下文的repl中。 thisglobal相同。如果您在浏览器中执行相同的代码,则会引用window对象而不是global