したがって、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" ???