次のスニペット:
a = 0;
function f1() {
a = 1;
f2();
}
function f2() {
return a;
}
f1();
未定義を返します。
私が理解していることから、関数は定義時に変数にアクセスし、実行時にそれらの変数の値にアクセスします。したがって、この場合、f2 はグローバル変数 'a' にアクセスできると推測し、変更された値 (1) を読み取ります。では、なぜ未定義なのですか?
次のスニペット:
a = 0;
function f1() {
a = 1;
f2();
}
function f2() {
return a;
}
f1();
未定義を返します。
私が理解していることから、関数は定義時に変数にアクセスし、実行時にそれらの変数の値にアクセスします。したがって、この場合、f2 はグローバル変数 'a' にアクセスできると推測し、変更された値 (1) を読み取ります。では、なぜ未定義なのですか?
関数内の の呼び出しの結果f2()
、または他の何かを返していないため、正しく返されています。f1
f1
undefined
おそらくあなたが求めていたのは次のことでした:
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
よろしく。