看的书是《Node.js 开发指南》,问题如图:
这上面说exports是和module.exports指向同一个对象的变量,那么给exports赋值不就等于再给module.exports赋值了吗?为啥这里不可以呢?
简单的说,当前模块的导出对象总是指向module.exports
,给它赋值什么当前模块就导出什么;
然后Node里通过exports = module.exports
使exports
指向module.exports
。
如果你赋值给exports
:exports = xxx
,那么exports
就不指向module.exports
了。
实际上,你写的模块代码是被Node封装成一个函数来调用的,即:
function (exports, require, module, __filename, __dirname) { ',
// 你的代码在这里
}
exports
、module
是这个函数的参数。虽然exports
和module.exports
指向相同的对象,但是如果你直接修改module
这个函数参数:
exports = xx;
很显然是没法达到目的的。
https://.com/q/1010000000708989
你需要知道二者区别!