1.什么是IIFE?
IIFE: Immediately Invoked Function Expression,意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数。
不采用
function foo(){
var a = 10;
console.log(a);
}
foo();
采用
(functionfoo(){
vara=10;
console.log(a);
})();
两者达到的目的是相同的,都是声明了一个函数foo并且随后调用函数foo。
为什么有IIFE?
常见形式?
第一种
(function foo(){
var a = 10;
console.log(a);
})();
第二种
(functionfoo(){
var a = 10;
console.log(a);
}());
这两种写法效果完全一样,使用哪种写法取决于你的风格,貌似第一种写法比较常见。
IIFE的多参数
var a = 2;
(function IIFE(global){
var a = 3;
console.log(a); // 3
console.log(global.a); // 2
})(window);
console.log(a); // 2