1

したがって、varキーワードなしで変数を宣言することは、グローバル スコープで宣言されることを意味することを理解しています。

したがって、以下の最初の例では、コードの 4 行目で、グローバル変数person (前にvarキーワードがない) を「Jim」から「Andrew」に変更します。

var person = "Jim";

function whosGotTheFunc() {
   person = "Andrew";
}

person = "Nick";
whosGotTheFunc();
console.log(person);

2 番目の例では、コードの 4 行目で、同じくpersonという名前の別のローカル変数を作成しています。

var person = "Jim";

function whosGotTheFunc() {
   var person = "Andrew";
}

person = "Nick";
whosGotTheFunc();
console.log(person);

しかし、両方の例の 7 行目は何をしているのでしょうか? 次の行: person = "Nick";

Treehouse クイズでは、コンソールに何が記録されているかを尋ねます。例 #1 では、4 行目でグローバル変数personを「Andrew」に変更しますが、7 行目はそのグローバル変数に影響を与えません (したがって、コンソールは「Andrew」をログに記録します)。しかし、例 #2 では、4 行目で実際、行 7 はグローバル変数の値を "Jim" から "Nick" に変更します (コンソールは "Nick" をログに記録します)。

私が知りたいのは、2 つの例の中で、7 行目の動作の違いはなぜですか? person = "Nick" ???

4

1 に答える 1

0

変数は両方の例で変更されています。ただし、への呼び出しwhosGotTheFunc()はグローバルな変更のであるため、最初の例では、「Nick」の値を上書きし、「Andrew」のままにします。

于 2013-10-16T04:58:55.997 に答える