JavaScript 閉包在封裝函數時的簡單分析

來源:互聯網
上載者:User

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哪個更好,為什嗎?一樣能實現的功能。

希望大家指點小弟,這樣理解對不對?
還有什麼補充的。
謝謝大家~~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.