作用一:实现公有变量
function add(){
var count = 0;
function demo(){
count++;
console.log(count);
}
demo();//或者return demo;
}
var counter = add();
add();
作用二:可以做缓存(存储结构)
function f(temp) {
var count=0;
for(var i =0;i< temp;i++)
{
count++;
(function () {
console.log(count);
}())
}
}
var i = 3;
f(3);
作用三:封装,私有化
在函数内的变量无法直接查看,只有函数里面的功能进行查看。
作用四:模块化
命名空间
管理变量,防止污染全局,适用于模块开发。
var name = 'bcd';
var init = (function(){
var name = 'abc';
function callName(){
console.log(name);
}
return function(){
callName();
}
}())
init();
利用变量私有化和立即执行函数。