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 のどちらが優れていますか、またその理由は何ですか?同様の機能を実現できます。
皆さんにアドバイスをいただければと思いますが、これは正しい理解でしょうか?
他に何か追加することはありますか?
皆さんありがとう~~~