C などの一部のプログラミング言語では、中かっこ内のコードの各部分には独自のスコープがあり、変数は宣言されているコード セグメントの外には表示されません。これをブロック レベルのスコープ (ブロック スコープ) と呼びます。 )、JavaScript にはブロックレベルのスコープはありません。代わりに、JavaScript は関数スコープを使用します。変数は、それが宣言されている関数の本体内と、それがネストされている関数の本体内で定義されます。 次のコードでは、異なる位置で定義された i、j、k はすべて同じスコープで定義されています
関数テキスト(o)
{
変数 i=0;
アラート(oのタイプ);
If(typeof o == "文字列")
{
var j=0;
for(var k=0;k
alert(k);//出力 0-9
alert(k);//出力 10
}
alert(j);//出力 0
}
JavaScript の関数スコープは、関数内で宣言されたすべての変数が関数本体内で常に表示されることを意味します。興味深いことに、これは、変数が宣言される前にすでに使用可能であることを意味します。 JavaScript のこの機能は、非公式にはホイスティングと呼ばれています。つまり、JavaScript 関数本体で宣言されたすべての変数 (代入を含まない) が関数本体の先頭に「進められます」。次のコードを見てください
コードをコピーします
var global="こんにちは QDao"
alert(global);//こんにちは QDao
}
関数スコープの特性により、ローカル変数は常に関数本体全体で定義されます。これは、関数本体内の変数が同じ名前のグローバル変数をカバーすることを意味します。ただし、ローカル変数は、プログラムが var ステートメントを実行するまで実際には割り当てられません。したがって、上記のプロセスは、変数の初期化をそのままにして、関数内の変数宣言を関数本体の先頭に「進める」ことに相当します。位置:
コードをコピーします
alert(global);//未定義
グローバル = "こんにちは QDao"
alert(global);//こんにちは QDao
}