哪位能给讲解一下 var module = { exports: {} }; 是啥意思

eisldkw 2020-04-01 05:50:48
下红色文字区域是从阮一峰先生的《浏览器加载 CommonJS 模块的原理与实现》 一文中摘抄出来的,实在看不懂,所以请大家帮忙看一下,请给讲解一下原理,谢谢大家:


var module = {
exports: {}
};

(function(module, exports) {
exports.multiply = function (n) { return n * 1000 };
}(module, module.exports))

var f = module.exports.multiply;
f(5) // 5000
上面代码向一个立即执行函数提供 module 和 exports 两个外部变量,模块就放在这个立即执行函数里面。模块的输出值放在 module.exports 之中,这样就实现了模块的加载。


...全文
245 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luj_1768 2020-11-10
  • 打赏
  • 举报
回复
按模块的执行端口理解,是一样的。
luj_1768 2020-11-10
  • 打赏
  • 举报
回复
模块的输出端口,就像函数的返回值。
eisldkw 2020-04-03
  • 打赏
  • 举报
回复
引用 1 楼 sotondolphin 的回复:
这是IIFE的一种形式 var module = { exports: {} }; 声明一个变量module,这个变量是一个object, 这个object 里只有一个属性叫exports,这个属性初始化为一个空object. (function(module, exports) { exports.multiply = function (n) { return n * 1000 }; }(module, module.exports)) 声明一个立即执行函数表达式,这个函数会把上面声明的module, module.export 当作参数传进去,并赋值一个新的函数,这个新函数会返回传进去参数的1000倍 var f = module.exports.multiply; f(5) // 5000 把返回的函数赋值给 f, 并执行 f
非常感谢。也感谢CSDN给大家提供了这样一个交流平台。起来我退休了,一定来做一年义工。
sotondolphin 2020-04-01
  • 打赏
  • 举报
回复
这是IIFE的一种形式 var module = { exports: {} }; 声明一个变量module,这个变量是一个object, 这个object 里只有一个属性叫exports,这个属性初始化为一个空object. (function(module, exports) { exports.multiply = function (n) { return n * 1000 }; }(module, module.exports)) 声明一个立即执行函数表达式,这个函数会把上面声明的module, module.export 当作参数传进去,并赋值一个新的函数,这个新函数会返回传进去参数的1000倍 var f = module.exports.multiply; f(5) // 5000 把返回的函数赋值给 f, 并执行 f

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧