立即执行函数特点: 没有函数变量声明提升,自动执行,没有被其他变量引用
匿名函数没有函数提升的过程
(function (dec,global){
// 找不同点
// global 实现私有化,是由于 形参的赋值window 对象
// window 使用的是上一层作用域,中的widnow,并非私有化
console.log(window);
console.log(global);
console.log(dec);
console.log('立即执行函数');
})('我是实参',window)
1:使用立即执行函数 解决闭包内存泄漏问题
2:立即执行函数,在浏览器加载时执行
3:执行时创建变量,并赋值,虽然res a b c 是闭包
4:执行完毕后;变量销毁 (res a b c 销毁)
看下面例题:
(function(global){
function foo(){
var count =0;
return function(){
console.log(++count);
}
}
var res = foo;
res();
res();
var a=foo();
a();
a()
var b =foo();
b()
var c =foo();
c()
})(window)
第二种闭包:
(function(){
var a=0;
function bar (){
console.log(++a);
}
bar();
bar();
})