var在NodeJs模块中属于哪个对象?

时间:2019-04-22 02:04:19

标签: javascript node.js scope

这是我的代码

var a=1;
console.log(global.a);
console.log(this.a);

同时打印undefined。并且表明a不属于globalthis(当前模块)。

我想知道a var属于哪个对象。

1 个答案:

答案 0 :(得分:4)

要了解这一点,您需要了解Node.js中的模块包装器

Node.js运行的所有JavaScript代码不是直接运行,而是由Node内部调用的函数调用包装。

模块包装器:

(function (exports, require, module, __filename, __dirname) {  
    // You code goes here  
});

实际运行的代码是:

(function (exports, require, module, __filename, __dirname) {  
    var a=1;
    console.log(global.a);
    console.log(this.a);
});

因此var a属于匿名函数的范围,不属于global对象的一部分,也不属于this的一部分(因为此函数未与任何对象(即Function)一起调用.prototype .call(null))

引用The module wrapper