前端小白,最近在看 vue todos 的源码,第一行就看不懂。
(function (exports) {
...
})(window);
1
xzem 2016-09-24 12:15:27 +08:00
这时候 exports 就是 window 对象?
|
2
bdbai 2016-09-24 12:59:16 +08:00 via Android
这是一个 IIFE ,用来避免污染全局作用域。需要导出的东西挂在 window 上,比如 exports.xxx = xxx ,这样外面就能调用 xxx 了。
|
3
zhouyg 2016-09-24 13:01:03 +08:00
为了封装好全局变量
|
5
iyangyuan 2016-09-24 13:40:59 +08:00 via iPhone
避免变量泄漏到全局,这是良好的编码规范
|
6
defcc 2016-09-24 16:32:32 +08:00
方便构建工具压缩代码,减少代码体积,因为 window 是全局变量名
|
7
CYKun 2016-09-24 18:30:48 +08:00 via Android 1
(function (exports){ .... }) 定义了一个匿名函数,参数叫做 exports ,然后以 window 为实参调用了这个函数。
这样的好处是,除了在这个函数内显式地添加到 window 中的变量,其他的变量都是局部的,不会泄露到全局去。 还有一个额外的好处,在函数内部的第一行可以用 'use strict' 声明使用严格模式,不用担心代码合并时出错。 |