首先我们新建一个js文件,然后直接打印this,再在立即执行函数中打印this,看一下区别
我们发现,直接打印this并不会得到全局global对象,这是因为在node中,node对js文件进行了包装
包装如下,这个默认的外层包装也是我们可以在js文件中直接使用,exports, require,module,__filename, __dirname的原因。
(function(exports, require, module, __filename, __dirname) {
// 这里面就是我们肉眼看到js文件的内容
// 此时的this === module.exports
})()
可以直接打印 arguments.callee.toString() 查看这个默认的封装函数
而在立即执行函数中的this,指向全局变量global
let name = 1111
// 挂载在全局变量
global.name = 333;
(
function foo() {
let name = 222;
console.log(this.name)
}
)()