2
4 个回答
15
采纳 没有区别。 你需要明白 IIFE 的原理,我简单说一下:
IIFE 并非必须,传统一点可以这么写:
那么为什么要 IIFE?
于是,开发者们想找一个可以解决以上问题的写法。那么像下面这么写行不行呢?
当然是不能,但是为什么呢?因为 如何把它变得正确?说起来也简单,只要把 声明 变成 表达式(Expression) 就可以了。 实际上转变表达式的办法还是很多的,最常见的办法是把函数声明用一对
这就等价于:
但是之前我们说不行的那个写法,其实也可以直接用括号包起来,这也是一种等价的表达式:
所以你问有没有区别?很简单:木有~ 另外,刚才说过转变表达式的方式很多,的确还有很多别的写法,比如:
或者
这些都可以。 我个人挺偏爱用
OK,所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象,那就 pass 给 IIFE:
我在这里写过一个系列,其中一篇讲作用域和命名提升的,里面的知识点对理解 IIFE 有帮助,有兴趣的话可以继续深入阅读:http://blog.segmentfault.com/nightire/1190000000348228
2
方式一,调用函数,得到返回值。强制函数直接量执行再返回一个引用,引用在去调用执行 |
|
来自: ThinkTank_引擎 > 《打包》