0

次のスニペット:

a = 0;

function f1() {
    a = 1;
    f2();
}

function f2() {
    return a;
}

f1();

未定義を返します。

私が理解していることから、関数は定義時に変数にアクセスし、実行時にそれらの変数の値にアクセスします。したがって、この場合、f2 はグローバル変数 'a' にアクセスできると推測し、変更された値 (1) を読み取ります。では、なぜ未定義なのですか?

4

2 に答える 2

5

関数内の の呼び出しの結果f2()、または他の何かを返していないため、正しく返されています。f1f1undefined

于 2013-05-26T21:24:09.240 に答える
0

おそらくあなたが求めていたのは次のことでした:

a = 0; // variable a defined in the global scope and set to 0

function f1() {
    a = 1; // since a is declared without var,
           // sets the value of global variable a to 1
    return f2();
}

function f2() {
    return a; // since a was not declared with var,
              // return a from the global scope
}

alert(f1()); // displays the computed value 1 of a

よろしく。

于 2014-10-27T14:43:26.983 に答える