立即执行函数表达式解析(IIFE)

形如(function test(){...})(),称为立即执行函数表达式(IIFE)。

第一个括号将函数变成表达式,第二个括号执行这个函数。

这样做可以让函数名不污染所在作用域,并且能够自动运行。
另一个改进的形式:(function(){ .. }()),这两种实现的功能是一样的。
 
参数的传递:
(function test(global){...})(window),此处global是形参,window是传递进去的实参。
 
IIFE 还有一种变化的用途是倒置代码的运行顺序,将需要运行的函数放在第二位,在 IIFE
执行之后当作参数传递进去:
(function IIFE(fn){
  fn(window)
})(function fn(global){
 //将fn当做参数传递给IIFE,并在IIFE函数中执行fn,并将window作为参数传递给global
})
 
建议最好使用具名立即执行函数表达式(有函数名)
因为匿名函数在栈追踪中不会显示出有意义的函数名,递归不便利,省略了对于代码可读性、可理解性很重要的函数名。
 
posted @ 2020-07-09 09:02  你风致  阅读(220)  评论(0编辑  收藏  举报