当我在节点中运行console.log(this)时,它返回空对象
(set-face-attribute 'default nil
:family "Inconsolata" :height 150 :weight 'normal)
但是当我在节点
中使用IIFE时console.log(this) // return { }
有人可以向我解释一下吗?
答案 0 :(得分:7)
因为NodeJS在模块中运行您的代码,this
引用它为模块的导出创建的对象(也是{{1}上的exports
属性它提供给你的变量)。 (正如他们在the module documentation中没有提到的那样,我怀疑使用它可能不是一个好主意 - 请改用module
。)
但是调用IIFE的代码用exports
来调用它来引用全局对象,因为在松散(非严格)模式下,不通过对象属性调用普通函数会调用它this
设置为全局对象。 (在严格模式下,this
会this
。)