exports 放到函数形参里是啥意思? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
eightqueen
V2EX    Javascript

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

  •  
  •   eightqueen 2016-09-24 12:08:32 +08:00 3025 次点击
    这是一个创建于 3380 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    还有一个额外的好处,在函数内部的第一行可以用 'use strict' 声明使用严格模式,不用担心代码合并时出错。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2669 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:40 PVG 19:40 LAX 03:40 JFK 06:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86