wbkt2t最近發現了一個新名詞:閉包。(自己落後了,要好好學習才行),baidu、google看了一下原理和執行個體,也明白了閉包的強大。JQuery也把閉包發揚光大了,網上一些個人開發的架構都是用了閉包了功能。知道了閉包的原理和使用發放,於是自己小小實驗了一把,帶著疑惑:使用閉包有什麼好處?不使用會出現什麼後果?寫下了以下代碼,也希望大家給小弟一些解答
使用閉包:
執行個體1
複製代碼 代碼如下:var $Darren;
(function(){
var Obj={version:"1.0",author:"Darren"};
Obj.Add=function(arg1,arg2){
return (arg1+arg2);
}
Obj.Multi=function(arg1,arg2){
return (arg1*arg2);
}
$Darren=Obj;
})(); //匿名函數,並使其馬上執行
alert($Darren.Add(6,2)); //結果 8
alert($Darren.Multi(3,5)); //結果15
不使用閉包代碼:
執行個體2 複製代碼 代碼如下:var $Darren2={version:"1.0",author:"Darren"};
$Darren2.Add=function(arg1,arg2){
return (arg1+arg2);
}
$Darren2.Multi=function(arg1,arg2){
return (arg1*arg2);
}
alert($Darren2.Add(6,2)); //結果 8
alert($Darren2.Multi(3,5)); //結果15
我的理解是:
.使用閉包後可以防止命名衝突,如在執行個體1中,如果$Darren變數衝突只需改兩處地方,而在執行個體2中,如果$Darren2變數衝突則需該多處(這裡是3處)
.使用閉包後,即使匿名函數執行完畢,但是還可以使用其內部的函數。
還有我有個疑惑就是:
為什麼大家都推薦執行個體1的寫法,執行個體1和執行個體2哪個更好,為什嗎?一樣能實現的功能。
希望大家指點小弟,這樣理解對不對?
還有什麼補充的。
謝謝大家~~~