2017-08-31 39 views
0

讓我們一起來看看這個很基本的program.js:節點JS此關鍵字的行爲

console.log(this); 

這裏是輸出:

$ nodejs program.js 
{} 

現在,如果我在REPL做samething控制檯:

$ nodejs 
> console.log(this) 

我在末尾看到未定義事物的日誌。

爲什麼我們不能得到相同的結果?

感謝

+0

我不知道你是如何得到一個空對象或undefined定義的對象之外,這將引用全局對象。 IE瀏覽器。這===全球 – thomasmeadows

回答

1

遇到兩種不同的行爲,因爲你基本上是在兩個不同的環境中執行代碼。

在program.js中,this answer適用。您在node.js模塊中,因此thismodule.exports相同。

在node.js repl中,this answer適用。你不在node.js模塊中;你在使用全局上下文的repl中。 thisglobal相同。如果您在瀏覽器中執行相同的代碼,它會引用window對象而不是global