آیا یک تابع آخرین تغییرات را دریافت میکند؟
اهمیت: 5
تابع sayHi از یک متغیر خارجی name استفاده میکند. زمانی که تابع اجرا میشود، کدام مقدار استفاده خواهد شد؟
let name = "John";
function sayHi() {
alert("Hi, " + name);
}
name = "Pete";
sayHi(); // ؟"Pete" یا "John" :چه چیزی نمایش خواهد داد
چنین موقعیتهایی در توسعه هم سمت مرورگر و هم سمت سرور رایج هستند. ممکن است یک تابع قرار باشد بعد از اینکه ساخته شد اجرا شود، برای مثال بعد از اینکه کاربر کاری انجام داد یا بعد از یک درخواست شبکه.
پس سوال این است: آیا این تابع آخرین تغییرات را دریافت میکند؟
جواب: Pete.
یک تابع متغیرهای بیرونی را همانطور که هستند دریافت میکند و از آخرین مقدارها استفاده میکند.
مقدارهای قدیمی متغیر جایی ذخیره نمیشوند. زمانی که تابعی یک متغیر را میخواهد، مقدار کنونی آن را از محیط لغوی خودش یا محیط بیرونی دریافت میکند.