exports 放到函数形参里是啥意思?

2016-09-24 12:08:32 +08:00
 eightqueen

前端小白,最近在看 vue todos 的源码,第一行就看不懂。

(function (exports) {
	...
})(window);
2732 次点击
所在节点    JavaScript
7 条回复
xzem
2016-09-24 12:15:27 +08:00
这时候 exports 就是 window 对象?
bdbai
2016-09-24 12:59:16 +08:00
这是一个 IIFE ,用来避免污染全局作用域。需要导出的东西挂在 window 上,比如 exports.xxx = xxx ,这样外面就能调用 xxx 了。
zhouyg
2016-09-24 13:01:03 +08:00
为了封装好全局变量
zhouyg
2016-09-24 13:01:22 +08:00
@zhouyg 说错了,是局部
iyangyuan
2016-09-24 13:40:59 +08:00
避免变量泄漏到全局,这是良好的编码规范
defcc
2016-09-24 16:32:32 +08:00
方便构建工具压缩代码,减少代码体积,因为 window 是全局变量名
CYKun
2016-09-24 18:30:48 +08:00
(function (exports){ .... }) 定义了一个匿名函数,参数叫做 exports ,然后以 window 为实参调用了这个函数。

这样的好处是,除了在这个函数内显式地添加到 window 中的变量,其他的变量都是局部的,不会泄露到全局去。

还有一个额外的好处,在函数内部的第一行可以用 'use strict' 声明使用严格模式,不用担心代码合并时出错。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/308645

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX