在浏览器中,全局范围是
window对象,而在nodeJS中,模块的全局范围是模块本身,因此,当您在nodeJS模块的全局范围中定义变量时,该变量将在该模块本地。
您可以在 NodeJS文档
中阅读有关此内容的更多信息,其中指出:
全球
<Object> The global namespace object.在浏览器中,顶级范围是全局范围。这意味着在浏览器中,如果您位于全局作用域var中,则将定义一个全局变量。在Node.js中,这是不同的。顶级范围不是全局范围;var
Node.js模块内部的某些内容对于该模块而言是本地的。
在您编写的代码中:
console.log(this)
在一个空的js文件(模块)中,它将打印一个{}引用您的空模块的空对象。console.log(this);
自调用函数中,this
将指向包含了所有常见的NodeJS属性和诸如方法在全球范围内的NodeJS对象require()
,module
,exports
,console
…console.log(this)
在自我调用函数中具有 严格模式undefined
的情况下,由于在严格模式下自我调用的函数没有默认的本地作用域对象,它将打印。



