1 require()函数干了两件事
首先应当知道,require函数是nodejs提供的,用来模块化的,内置函数。
当你使用require(“./mydemo.js”),它做了两件事:
1、返回一个对象,其中包含了导入目标js文件中暴露的数据(属性、函数)。
可以通过var obj = require(“./mydemo.js”);接收,通过obj.x,obj.func( )取用。
2、运行mydemo.js。
本质是用一个函数把mydemo.js包起来,运行这个函数。但是,你不能我说啥就是啥啊,怎么验证呢?
2 验证运行本质
两个文件:
// main.js
var obj = require('./mydemo');
console.log(
obj
);
console.log('obj.func(1024,1024) = ',obj.func(1024,1024));
var x = 666;
var y = 888;
function add(src, dev) {
return src + dev;
}
exports.hello = "你好"
exports.name = "张三丰"
exports.func = add
/**
* arguments 伪数组对象(类数组对象)其中封装了函数的参数
* - 是函数独有的,在函数体外没有!!!
*
* 我们就来输出 arguments,证明 mydemo.js 真的被套在了一个函数里执行
*/
console.log(arguments);
// arguments.callee 保存的是当前执行函数对象,打印出来看一看
console.log(arguments.callee + '');
在终端运行 node index.js ,输出,可以看到函数体:
3 结论

4 参考
尚硅谷nodejs课程(bilibili)