0

私はこれを理解していません -条件var内で定義されたifをその条件の外でどのように使用できますか?

JS の例:

if (1===2) {
  var myVar = "I live in brackets";
}
$("#debug").append("myVar = " + myVar);
$("#debug").append("but I'm about to throw a 'not defined' exception right... now " + firstAppearanceVar);

レンダリング:myVar = I live in brackets

myVarのスコープはそのif (1===2)条件内だけではありませんか?

4

4 に答える 4

2

Javascript にはブロックスコープがなく、関数スコープしかありませ

つまり、によって宣言された変数は、 functionvarのスコープ内で、どこでも、その場でアクセスでき、外部ではアクセスできません。

于 2013-02-28T19:16:16.063 に答える
2

スコープは関数にのみ適用され、他のブロックには適用されません。

于 2013-02-28T19:16:08.553 に答える
1

巻き上げのため、すべての変数宣言が関数スコープの先頭にポップされます。

alert(foo); // undefined (no error because of the hoisting.)
var foo = 2;
alert(bar); Error
于 2013-02-28T19:17:16.660 に答える
0

JavaScript 変数が定義されると、宣言は関数スコープの先頭に引き上げられます。

したがって、この:

if (1===2) {
  var myVar = "I live in brackets";
}
$("#debug").append("myVar = " + myVar);
$("#debug").append("but I'm about to throw a 'not defined' exception right... now " + firstAppearanceVar);

これに等しい

var myVar;
if (1===2) {
  myVar = "I live in brackets";
}
$("#debug").append("myVar = " + myVar);
$("#debug").append("but I'm about to throw a 'not defined' exception right... now " + firstAppearanceVar);

したがって、関数で定義された変数は、その関数内のどこでも、または内部関数内でもアクセスできます。関数の外ではアクセスできません。

それで

(function(){
    if (1===2) {
      var myVar = "I live in brackets";
}}())
$("#debug").append("myVar = " + myVar); //reference exception
于 2013-02-28T19:23:08.450 に答える