在执行模块的代码之前,Node.js 将使用如下所示的函数包装器来包装它
(function(exports, require, module, __filename, __dirname) {
// Module code actually lives in here
});
通过这样做,Node.js 实现了一些目标:
- 它将顶级变量(使用 、 或 定义var)const保持let在模块而不是全局对象的范围内。
- 它有助于提供一些实际上特定于模块的全局变量,例如:
- 实现者可以用来从模块中导出值的module和对象。exports
- 便利变量
__filename
and __dirname
,包含模块的绝对文件名和目录路径。