立即执行函数表达式IIFE(Immediately Invoked Function Expression)
立即执行函数,顾名思义,就是编译器编译到这个函数时,可以立即执行。而不是像一般的函数那样需要根据函数名来调用执行,传统的函数调用,比如下面的这个是传统的调用方式:
function a1(){
//code
}
a1()//调用a1
立即执行函数是这样的:
(function(){
//code
})() //调用
两种表达方式
第一种(括号在外面):
(function(){
//code
})()
第二种(括号在里面):
(function(){
//code
}())
这两种形式在功能上是一致的,选择哪个全凭个人喜好。
IFE的一种进阶用法
IIFE的一个进阶用法是把它们当做函数调用并传递参数进去。写插件时为了不污染全局变量,可以用这种方式。 例如:
var a = 2;
(function IIFE(global){
var a = 3;
console.log(a); //3
console.log(global.a); //2
})(window)
console.log(a) //2