第V章のWebフロントエンドの開発エンジニア--JavaScriptハイレベルのプログラミング-5-2 JavaScriptのスコープとクロージャ

JavaScriptのスコープとクロージャ

 

このレッスンでは、話をすることです:

  1. JavaScriptのスコープ
  2. JavaScriptを閉鎖

スピーカー教師:ヘッド先生

A. JavaScriptのスコープ

セクションを包んブロックスコープブレース

{(; iは3 <I ++がVAR I = 1)のために

 

}

PS:JavaScriptの動的スコープではありません

関数f(){

警告(x)は、

}

関数f(){

F()

VAR X = 5。

}

F()。

二つの閉鎖.JavaScript

クロージャがクロージャの一般的な方法を作成するために、別の関数スコープ変数にアクセスする機能であり、それは別の関数で別の関数は、この関数のローカル変数に内部関数を作成することです。

//ローカル変数は閉鎖によって返すことができます

関数ボックス(){

VaRのユーザー= 'リー';

関数の戻り値は(){ 無名関数のローカル変数でボックス()を返す//

ユーザーを返します。

}。

}

アラート(箱()()); //ボックスから()()を直接匿名関数の戻り値を呼び出します

 

ここで、B =ボックス()。

アラート(B()); //別の無名関数の戻り値を呼び出します

クロージャを使用すると、利点を持っていますが、またその欠点:メモリに常駐することができますローカル変数は、グローバル変数の使用を避けること。(グローバル変数汚染は、各モジュールは、災害につながると呼ばれることができ、予測不可能性への応用を引き起こし、プライベート、ローカル変数のパッケージを使用することをお勧めします)。

//グローバル変数を介して蓄積します

年齢= 100 VAR; //グローバル変数

関数ボックス(){

++年齢; //モジュールレベル蓄積し、グローバル変数と呼ばれることができます

}

ボックス(); //関数を実行、累積

アラート(年齢); //グローバル変数の出力

 

//ローカル変数を蓄積することにより達成することができません

関数ボックス(){

年齢= 100でした。

++年齢; //が蓄積

年齢を返します。

}

 

警告(箱()); // 101

アラート(ボックス()); 初期化されているので、// 101は、達成することができません

 

//ローカル変数蓄積が閉鎖することによって達成することができます

関数ボックス(){

年齢= 100でした。

復帰機能(){

年齢++;

年齢を返します。

}

}

ボックスB = VAR(); //取得機能

アラートは、(B()); //無名関数を呼び出します

アラート(B()); // 2番目の呼び出し匿名関数、累積達成するために

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/wgf5845201314/article/details/92076946