0

私のテストは、タイトルが確かに正しいことを示唆しています。でも、思いもよらない微妙なニュアンスがあるかどうかはわかりません。参照:forループまたはifブロック内で変数を宣言することに何か問題がありますか?

4

1 に答える 1

2

それらが同じスコープ内にある場合、テストは正しいです。同じスコープで同じ変数を再宣言しても、何も起こりません。

ただし、それらが同じスコープ内にない場合は、ローカルスコープで変数を再宣言すると、そのスコープ内の元の変数をオーバーライドする新しい変数が作成されます。

したがって、これは正常に機能します。

var value = "foo";
var value;
console.log(value);   // "foo"

ただし、これにより、グローバルに定義された変数の値を持たない新しい変数がローカルスコープに作成されます。

var value = "foo";

function test() {
    var value;            // this creates a new variable that is separate
                          // from the globally declared one with the same name
    console.log(value);   // undefined
}

test();
于 2012-11-10T01:54:41.103 に答える