関数をカプセル化するときの JavaScript クロージャーの簡単な分析_JavaScript スキル

WBOY
リリース: 2016-05-16 18:41:04
オリジナル
1004 人が閲覧しました

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 のどちらが優れていますか、またその理由は何ですか?同様の機能を実現できます。

皆さんにアドバイスをいただければと思いますが、これは正しい理解でしょうか?
他に何か追加することはありますか?
皆さんありがとう~~~
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート