スコープは、JavaScriptの最も重要な概念の1つです。 JavaScriptをよく学習したい場合は、JavaScriptの範囲とスコープチェーンの作業原則を理解する必要があります。本日の記事では、JavaScriptの範囲の例の詳細な説明を紹介します。
プログラミング言語には範囲の概念があります。簡単に言えば、スコープは変数と関数のアクセス可能な範囲です。つまり、スコープは変数と関数の可視性とライフサイクルを制御します。 JavaScriptでは、変数の範囲はグローバルでローカルです。
1. JavaScriptにはブロックレベルのスコープなし
JavaまたはC#にはブロックレベルの範囲があります。つまり、ブレースも範囲です。
public static void main(){if(1 == 1){string name = "7";} system.out.println(name);} //エラーpublic static void main(){if(1 == 1){string name = "7";} console.writeline(name);}JavaScriptにはブロックレベルの範囲はありません
function main(){if(1 == 1){var name = '7';} console.log(name);} // output:72。JavaScriptは関数範囲を採用します
JavaScriptでは、各関数はスコープとして機能し、内部範囲の変数に外部からアクセスすることはできません。
function main(){var inneralValue = '7';} main(); console.log(innervalue); // error:uncaught referenterror:inneralValueは定義されていません3。JavaScriptスコープチェーン
JavaScriptの各関数はスコープであるため、機能ネストされた関数が表示されると、スコープチェーンが表示されます。
xo = 'alex'; function func(){var xo = "7"; function inner(){var xo = 'alvin'; console.log(xo);} inner();} func();たとえば、上記のコードは、3つのスコープで構成されるスコープチェーンに表示されます。スコープチェーンが表示されると、変数を探すときに順序が表示されます。上記の例:
Console.log(XO)が実行されると、その検索注文は、スコープチェーンの優先度に応じて内側から外側まで検索することになります。内側の層が存在しない場合、例外が見つからないまで徐々に見上げます。
4. JavaScriptのスコープチェーンは、実行前に作成されました
JavaScriptの範囲は、実行される前に作成されました。将来実行される場合、スコープチェーンに従って検索するだけです。
例1:
xo = 'alex'; function func(){var xo = "7"; function inner(){console.log(xo);} return inenter;} var ret = func(); ret(); //出力結果:7上記のコードは、関数が呼び出される前にすでに存在します。
•グローバルスコープ - > FUNC関数スコープ - >内部関数スコープ
[ret();]を実行すると、内部関数を指すため、この関数のスコープチェーンは次のように定義されています。グローバルスコープ - > func関数スコープ - >内部関数スコープなので、[ret();]を実行すると、既存のスコープチェーンに基づいて変数が見つかります。
例2:
xo = 'alex'; function func(){var xo = "eirc"; function inner(){console.log(xo);} xo = '7'; return inner;} var ret = func(); ret(); //出力結果:7上記のコードには例1と同じ目的があり、関数が呼び出される前にスコープチェーンがすでに存在することも強調しています。
•グローバルスコープ - > FUNC関数スコープ - >内部関数スコープ
違う場合、[var ret = func();]を実行すると、funcスコープのxo変数の値が「eric」から「7」にリセットされているため、[ret();]を実行すると、「7」しか見つけることができません。
例3:
xo = 'alex'; <br> function bar(){console.log(xo);} function func(){var xo = "seven";} var ret = func(); ret(); //出力結果:alex上記のコードでは、関数が実行される前に2つのスコープチェーンが作成されました。
•グローバルスコープ - >バー機能スコープ
•グローバルスコープ - > FUNC機能スコープ
[ret();]を実行すると、RETはバー機能を指し、バー機能のスコープチェーンは既に存在します。グローバルスコープ - >バー機能スコープなので、実行すると、既存のスコープチェーンに基づいて検索されます。
5。事前のステートメント
変数を作成せず、JavaScriptで直接使用する場合、エラーが報告されます。
console.log(xxoo); //エラー:conged referenceError:xxooは定義されていません
JavaScriptでは、値を割り当てずに値を作成した場合、次のような値は未定義です。
var xxoo; console.log(xxoo); // output:undefined
これが関数に記述されている場合:
function foo(){console.log(xo); var xo = 'seven';} foo(); // output:undefined上記のコードはエラーを報告するものではなく、定義されていない出力を出力します。その理由は、JavaScript関数が実行される前に、値を割り当てることなく、それらのすべての変数を宣言するためです。したがって、「プリコンパイル」時に関数がvar XOをすでに実行していることは上記の例に相当します。したがって、上記のコードの出力は未定義です。
上記は、編集者によって導入されたJavaScriptスコープサンプルの詳細な説明です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!