オリジナル住所:https://www.cnblogs.com/phermis/p/7307209.html
今日は、グローバルとローカル変数の理解が深い十分ではありません記事書かれた神を見たので、要約するこの記事を書きました。
次のように偉大な神コード+スクリーンショットは、テキストを理解します:
分析:上記のコードは、変数がi
あるvar
コマンドのみグローバル変数ように、世界的に有効と宣言しましたi
。各サイクルでは、変数i
の値が変化するが、サイクルは、アレイに割り当てられているa
機能の内側にconsole.log(i)
、i
ポイントがグローバルですi
。換言すれば、すべてのアレイa
メンバの内部i
、点は同じでありi
、実行時の出力の最後のラウンドである原因、i
10値、。
まず、定義
ローカル変数:関数内で宣言した変数は、関数の内部でのみアクセスすることができます。
グローバル変数:関数定義外の変数は、コード全体で変数を呼び出すことができます。
免責事項キーワード:VAR。JavaScriptは、直接変数を宣言していない、変数隠者を使用することができます。隠者内のJavaScriptの変数は、常に使用するグローバル変数として宣言しました。
第二に、可変リフト(この知識を理解していない場合は、それがピットに簡単です)
そのための方法JSエンジンの、すべての変数を実行するために1つずつ宣言されている取得するので、変数宣言文は、現在のコードブロックの先頭に昇格されますです。
注:場合、標準ブロック分割スコープされていない、つつブロック/ブロック法は===>関数は、{}、機能ブロックを回避括弧の対を意味しました。
第三に、詳細について
コードは実際にこれを実行するように、コードの効果を高めるために:
<スクリプトタイプ=「テキスト/ JavaScriptを」> VAR 1 = A; 機能TEST1(){ VARのA; // I [割り当てられていない場合、ローカル変数は、グローバル変数に優先グローバル変数と同じ名前のローカル変数、それがあろうこの場合には、グローバル変数を覆うのみ宣言が定義されていない] 警告(A); //警告が行われるように不定 A = 2; アラート(A); } TEST1(); 警告(A); //未定義2 </ SCRIPT>
第四に、例
分割されたブロックの方法(分割括弧{}の対、すなわち機能)に係るスコープのJavaScript変数。ここで再び、私は再び強調:はいファンクション・ブロック、及び、ブロックは、分類基準の範囲でない場合は、しばらく。その変数が促進されていません。
それがグローバルスコープの機能していないときにスコープ内jsが唯一、スコープとグローバルスコープ機能します。[参考住所:のhttp://www.cnblogs.com/zhus/p/6513741.html]
ます。<script type = "text / JavaScriptを"> 関数TEST2(){ アラート( "のスコープの前に:" + I); // I [宣言されていない未割り当てではありません!宣言されていない変数や関数の完全なスロー致命的なエラー割り込みスクリプトの実行]を使用し (;私は3を<;私は= 0 VAR私は++)のために{ アラート( "のスコープに:" + I); // iの値が0であります、2、iが3れるループのうち } アラート(「スコープ後ための」+ I); // iの値が3であるよりは、この場合、スコープのあるが、iの値を保持していることに注意してください3 ながら(真の){ VARのJ = 1; BREAK; } アラート(J); // jの値は、それがスコープながら外されています。この時点で注目されているが、それでも、jの値が1で保持し、1であり、 IF(真の){ 1つの= VAR K; } アラート(K); // k値が1であり、それはこの時点で注目される範囲外の場合にあったが、kの値が1で保持している } )TEST2(。 //(関数のスコープ外)この時点では再輸出はI、J、K変数神の馬の効果が起こる場所TEST2この関数スコープにのみ存在する場合は? 警告(I);!私が宣言されていない変数は、スクリプトエラーを引き起こし、(割り当てられていないではない、出力TEST2関数の最初の行を区別する)ので、//エラーがはい、それは、エラーでは、プログラムが終わりました! 警告( "この行は出力にあなたが印刷されます?"); //実行されていない 警告(j)を; //実行されていない 警告(k)を; //実行されていない </ SCRIPT>
参考ます。http://blog.csdn.net/zyz511919766/article/details/7276089