也就是定义函数并立刻执行,可以这么理解 var fn=funciton(){}; fn(); 用上面的写法就省去了fn这个变量
js闭包——(我最经也在看这个问题)是js一种封装方法使得函数内部var声明的变量有类似static的效果(作用域)写法演变效果如下:首先 var p=function(){}(); 同 (function p(){})(); 其次关于闭包 function a(){ var i=0; function b(){ alert(++i); } return b; } var c = a(); c() c() ; 上述方法简化为var a=function(){ var i=0; return function b(){ alert(++i); }
}() a() a()在简化为 (function a(){ var i=0; function b(){ alert(++i); } return b; })() a() a() a() 这样做的好处就是使得变量i实现了一种私有属性的效果。
.....
})();立即执行这个匿名函数
var fn=funciton(){};
fn();
用上面的写法就省去了fn这个变量
同
(function p(){})();
其次关于闭包
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c()
c()
;
上述方法简化为var a=function(){
var i=0;
return function b(){
alert(++i);
}
}()
a()
a()在简化为 (function a(){
var i=0;
function b(){
alert(++i);
}
return b;
})()
a()
a()
a()
这样做的好处就是使得变量i实现了一种私有属性的效果。
var i=0;
return {
add:function(){alert(++i)},
clear:function(k){i=k}
}
}()
a.add()
a.add()
a.clear(12)
a.add()这就是js的面向对象的写法的一种方式了