给出以下代码片段。
var name = 'John';
function foo() {
console.log(this.name);
}
foo();
为什么当我在浏览器中运行此代码时,日志会输出名称,但是当我在节点中运行相同的代码段时,它会输出undefined
?
在浏览器中this
引用窗口对象,全局变量将附加到窗口。现在在节点this
中将引用此示例中的全局对象,那么我的全局变量是否不会像在浏览器中附加到窗口时那样附加到全局对象?
答案 0 :(得分:1)
Node.js global
与浏览器中的全局范围的工作方式不同。有关详细信息,请参阅What is the best algorithm for an overridden System.Object.GetHashCode?的定义:
在浏览器中,顶级范围是全局范围。这意味着在浏览器中var将定义一个新的全局变量。在Node.js中,这是不同的。顶级范围不是全球范围; Node.js模块中的
var something
将是该模块的本地。
这个问题也许有用:global
。
答案 1 :(得分:0)
你不应该使用它,因为它引用了全局范围对象。在浏览器中它是文档。如果要访问变量,只需写下其名称即可。有运营商。您访问对象的属性。