这个属性的值在nodeJS上没有定义
我还在学习JavaScript,当我试图理解this
行为时,我有点困惑。 有一件事我明白this
关键字实际上指的是函数调用的地方在哪里。 我试图运行下面的示例代码:
function foo() { console.log ( this.a ); } var a = 2; foo();
预期的结果是2.它在Chrome的控制台上显示2
,但是当我试图从NodeJS运行它时,结果结果将是undefined
。 我的节点版本是6.10.1
在Node中运行的代码与浏览器的控制台比较时,调用站点会有所不同,或者当我在nodeJS上运行代码时,特别是在使用this
关键字时是否有什么需要我担心?
在浏览器中你的全局对象是Window,“this”是指窗口对象。 在此执行上下文中创build的每个variables都附加到Window对象。
在NodeJS中,每个在特定执行上下文之外定义的variables都附加到“模块”上下文,该上下文被视为您正在处理的文件,而不是节点使用的全局对象。
因此,在浏览器中调用您的函数的对象是Window对象,而在节点中是Global对象。 在浏览器中,variables“a”被附加到Windows对象,“this”指向它。 在节点“a”附加到为导出文件而创build的模块,但“this”指向Global对象。
检查这个答案
这是因为非严格模式下的默认值是window
当你在函数外部定义任何variables时,它也成为window
一部分。
样品
function foo() { console.log(this.a); console.log(window.a); } var a = 2; foo();