ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript関数scope_基礎知識

JavaScript関数scope_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:31:361124ブラウズ

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="globas"; 関数 globals() { alert(global);//未定義
var global="こんにちは QDao"
alert(global);//こんにちは QDao
}



関数スコープの特性により、ローカル変数は常に関数本体全体で定義されます。これは、関数本体内の変数が同じ名前のグローバル変数をカバーすることを意味します。ただし、ローカル変数は、プログラムが var ステートメントを実行するまで実際には割り当てられません。したがって、上記のプロセスは、変数の初期化をそのままにして、関数内の変数宣言を関数本体の先頭に「進める」ことに相当します。位置:


コードをコピーします

コードは次のとおりです: var global="globas"; 関数 globals() { 変数グローバル
alert(global);//未定義
グローバル = "こんにちは QDao"
alert(global);//こんにちは QDao
}



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。