为什么console.log(this)在节点中返回空对象?

时间:2017-03-06 17:18:07

标签: javascript node.js

当我在节点中运行console.log(this)时,它返回空对象

 (set-face-attribute 'default nil
                :family "Inconsolata" :height 150 :weight 'normal)

但是当我在节点

中使用IIFE时
console.log(this)             // return { }

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:7)

因为NodeJS在模块中运行您的代码,this引用它为模块的导出创建的对象(也是{{1}上的exports属性它提供给你的变量)。 (正如他们在the module documentation中没有提到的那样,我怀疑使用它可能不是一个好主意 - 请改用module。)

但是调用IIFE的代码用exports来调用它来引用全局对象,因为在松散(非严格)模式下,不通过对象属性调用普通函数会调用它this设置为全局对象。 (在严格模式下,thisthis。)