JAVASCRIPT関数のスコープと事前宣言 Share_基礎知識

WBOY
リリース: 2016-05-16 17:24:46
オリジナル
1110 人が閲覧しました

C や Java などの一部の言語にはブロック レベルのスコープがあります。つまり、中括弧内のコードの各部分には独自のスコープがあり、変数は宣言されているコード セグメントの外には表示されませんが、JavaScript にはブロックがありません。 -レベルのスコープ。 JavaScript は関数スコープを使用します。つまり、変数は宣言されている関数本体と、この関数本体がネストされている関数本体で定義されます。つまり、関数内で宣言されたすべての変数は常に関数本体で表示されます。これは、変数が宣言される前に使用できることを意味します。この機能は「宣言先行」と呼ばれます。つまり、JavaScript 関数で宣言されたすべての変数が関数の先頭に先行されます。例を見てみましょう。

コードをコピー コードは次のとおりです:

var test1 = "globalVariable";
function test(){
console.log(test1);
var test1 = "localVariable";
console.log(test1);
}

上記の関数を実行すると、結果は、最初に「unknown」が出力され、次に「localVariable」が出力されます。
多くの人は、結果が「最初に globalVariable、次に localVariable」を出力すると誤解しています。実際には、そうではありません。関数スコープの特性により、ローカル変数は常に関数本体全体で定義されます。つまり、関数本体内のローカル変数が同じ名前のグローバル変数をカバーするのは、プログラムが var ステートメントを実行すると、ローカル変数が実際に割り当てられます。したがって、上記の処理は、変数の初期化を元の位置に残したまま、関数内の変数宣言を関数本体の先頭まで進めることと同じです。次の関数と同等です
コードをコピー コードは次のとおりです:

var test1 = "globalVariable" ;
Function test(){
var test1; // 関数内の変数宣言を関数の先頭に進めます
console.log(test1); localVariable"; // Assignment
console.log(test1);
}

ただし、関数内で変数がvarで宣言されていない場合は状況が異なります。

コードをコピー コードは次のとおりです:
var test1 = "globalVariable";
function test(){
console.log(test1);
test1 = "localVariable";
}


結果この関数を実行するかどうか はい: 最初に「globalVariable」を出力し、次に「localVariable」を出力します。
関数本体のtest1変数はvarで宣言されていないので、デフォルトでグローバル変数になりますが、変数の早期宣言は問題ありません。 1行目は「globalVariable」を出力し、3行目はtest1グローバル変数の値を変更して「localVariable」を出力します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート