2017-04-25 71 views
0

根据MDN,this关键字的行为如下。Node.js此关键字

在全局执行上下文(任何函数之外)中,无论是否在严格模式下,都将全局对象引用为 。

我通过运行这些代码进行测试:

'use strict'; 
console.log(this === global); 

结果是混乱的。当我将这些代码放入一个文件并通过执行node test.js来运行它时,它将返回false。但是当我在repl.it中运行它时,它返回true。

我期望这两种方式都应该返回true。谁能解释为什么?

回答

1

节点中的文件是模块,并且位于它们自己的上下文中以避免污染全局名称空间。

在repl中,您处于自己的上下文中,恰好是全局上下文。

+0

这意味着,默认情况下,每个nodejs文件中的“this”不等于全局对象吗? –

+1

@JunbangHuang不,这取决于文件是否作为模块执行。 – Bergi