2017-08-15 86 views
0

當我在Chrome開發工具中輸入代碼console.log(this);,它會顯示:全球範圍和Node.js的

Window {stop: function, open: function, alert: function, confirm: function, prompt: function…} 

,但是當我在node.js中執行相同的代碼(v6.11.1)它顯示:

{} 

它不應該顯示關於全局對象的信息嗎?

(該代碼僅被執行的事情,它不是一個程序的一部分。)

+0

這些都是窗口/瀏覽器方法。你爲什麼期望節點模塊的全局環境看起來像這樣? – Andy

+0

我不知道這個代碼會被隱式地封裝在一個'模塊'中。謝謝。 – igobivo

回答

1

中的節點模塊中的頂級代碼,這相當於module.exports。這是你看到的空白物體。例如:

module.exports.a = 'test'; 
console.log(this); // 'test' 

在瀏覽器中,而無需使用"use strict" -directive,指全局對象(窗口)。

+0

謝謝,我現在明白了。此外這個問題是現貨:https://stackoverflow.com/questions/15406062/in-what-scope-are-module-variables-stored-in-node-js – igobivo