2017-04-25 60 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