関数は最新の変更をピックアップしますか?
重要度: 5
sayHi関数は外部変数のnameを使用しています.関数が実行されると、関数はどの値を使用しますか?
let name = "John";
function sayHi() {
alert("Hi, " + name);
}
name = "Pete";
sayHi(); // what will it show: "John" or "Pete"?
このような状況はブラウザとサーバー側の開発の両方で一般的です.たとえば、ユーザーのアクションやネットワーク要求の後に、関数が作成されるより後に実行されるようにスケジュールされる場合があります
そこで質問は、最新の変更を取り込むかどうかい、です。
答えは: Peteです
関数は外部変数を現在の値として取得し、最新の値を使用します
古い変数の値はどこにでも保存されません.関数が変数を必要とするときは、独自の字句的環境または外部の環境から現在の値を取得します