1

私の知る限り、次の宣言は変数に値を追加しませんaa

var aa = undefined;

function a () {
    var aa;
    console.log(aa);  // here aa is still undefined
    if(!aa) {
        aa = 11;  // should add to the globle scope (window Object)
        bb = 12;  // should add to the globle scope (window Object)
    }
    console.log(aa);
    console.log(aa);  // should be 11
    console.log(bb);  // should be 12
}

aavarsとへのアクセスを使用したい場合は、 notbbのみにアクセスできます。私の質問は、宣言で値を割り当てておらず、まだ未定義であるため、外部からアクセスできないのはなぜですか?bbaaaa

ありがとうございました。

4

2 に答える 2

1

私のコメントを見て

var aa = undefined; // global scope

function a () {
    if(true) { // useless
        var aa; // declare aa in the function scope and assign undefined
        // to work on the global aa you would remove the above line
        console.log(aa);  // here aa is still undefined
        if(!aa) {
            aa = 11;  // reassign the local aa to 11
            bb = 12;  // assign 12 to the global var bb
        }
        console.log(aa); // aa is 11
    }
    console.log(aa);  // still in the function scope so it output 11
    console.log(bb);  // should be 12
}
console.log(aa) // undefined nothing has change for the global aa

詳細については、これを読んでくださいgreat Ebook

于 2013-06-14T06:36:24.123 に答える
0

関数内から削除してみてくださいvar aa;

ここで起こっているのはfunction scopeです。aa内でローカル変数として宣言しましたfunction a。ローカル変数 IS が 11 に設定されています。

于 2013-06-14T06:33:54.783 に答える