レッスンに戻る

関数は最新の変更をピックアップしますか?

重要度: 5

sayHi関数は外部変数のnameを使用しています.関数が実行されると、関数はどの値を使用しますか?

let name = "John";

function sayHi() {
  alert("Hi, " + name);
}

name = "Pete";

sayHi(); // what will it show: "John" or "Pete"?

このような状況はブラウザとサーバー側の開発の両方で一般的です.たとえば、ユーザーのアクションやネットワーク要求の後に、関数が作成されるより後に実行されるようにスケジュールされる場合があります

そこで質問は、最新の変更を取り込むかどうかい、です。

答えは: Peteです

関数は外部変数を現在の値として取得し、最新の値を使用します

古い変数の値はどこにでも保存されません.関数が変数を必要とするときは、独自の字句的環境または外部の環境から現在の値を取得します