在Node.js中,module文件里面使用var,const或者let定义的top-level变量为何是私有的,只能在这个模块文件中使用呢?
原因就是,在模块文件中的内容执行之前,node.js会降模块文件包含在一个函数当中,像下面这样:
(function(exports, require, module, __filename, __dirname) { // Module code actually lives in here });
这样处理之后,module文件里面定义的top-level变量,实际上就是函数内部的局部变量了,如果不实用exports导出,外部是无法访问到的。
参考链接:
https://nodejs.org/api/modules.html#modules_the_module_wrapper