インタビュアーは、クロージャの質問をします-----

就職の面接を探しているとき、あなたは同じ良いと問題の種類を尋ねるインタビュアーはつまり、議論するの閉鎖この問題

通常の状況下でお願いします:

クロージャとは何ですか?

クロージャ何の機能?

クロージャは、ページ上の任意の効果がありますか?

長所と短所の閉鎖は何ですか?

...............

だから、今、私たちは、プレートの閉鎖に来て!

 

クロージャとは何か:

クロージャーは、ネストされたスコープを使用することで、オリジナルのローカル変数は、環境無料のプライベート変数に進化します。

クローズド原則パッケージ:

コンピュータのトリガ、ネストされたスコープを使用して、ガベージコレクションのメカニズムを使用し続けることができ、変数が最初に保存され、一時的に削除され、。

ガベージコレクション:

データは一時的に、すぐに削除されていない、一時領域に保存されている必要が再び使用する場合は、あなたがクリア行くために、このようなこれ以上の使用として、引き続き使用する直接、このデータを見つけることができ、削除します。

アプリケーションパッケージの閉鎖:

1.非同期サイクル:

VARアリ= document.querySelectorAll( "李"); 

//第一种
(VAR i = 0; iはali.lengthを<; I ++の)のために{ 
    (関数(指数){ 
        アリ[インデックス] .onclick =関数(){ 
            にconsole.log(インデックス); 
        } 
    })は、(i )
} 

//第二种
(VAR i = 0; iはali.lengthを<; I ++の)のために{ 
    アリ[I] .onclick =(関数(指数){ 
        return関数(){ 
            にconsole.log(インデックス); 
        } 
    } )(私); 
} 

//第三种
(I = 0せ; iがali.lengthを<; I ++の)のために{ 
    アリ[I] .onclick =関数(){ 
        にconsole.log(I)。
    } 
}

2.タイマーコールバック関数

setTieout(FN( "こんにちは")、5000); 
関数fn(STR){ 
    return関数(){ 
        にconsole.log(STR)。
    } 
}

3.関数内で外部変数を繰り返し

関数fn(){ 
    VARのA = 10。
    復帰機能(){ 
        にconsole.log(++)
    } 
} 
のvar F = FN()。
F()。
F()。
F()。

 特性閉鎖パッケージ:

クロージャは、内部および外部接続ブリッジの範囲であります

利点:

1.あなたは非常に便利な、アップ、削除するデータを保存し、使用し続けることができます

2.データは、関数の内部動作の外部にあってもよいです

短所:

1.データが削除されるので、削除されたが、それは存在し続けていない、それはメモリを占めることになる、パフォーマンスが良いです。

2.外部データが内部変更されることがあります。

おすすめ

転載: www.cnblogs.com/musen123/p/11609642.html