بعنوان مثال کد زیر رو در نظر بگیریم :
function f()
{
console.log(x);
}
function g()
{
var x=3;
f();
}
var x=5;
g();
الان در این کد نتیجه ای که لاگ کرفته میشود برابر ۵ هستش (lexical scoping or static scoping)درحالیکه اگر ۳ لاگ گرفته میشد (dynamic scoping) جاوااسکریپت dynamic scoping رو ساپورت میکرد اما متاسفانه جاوااسکریپت هم مثل بیشتر زبون ها اینو ساپورت نمیکنه و فقط با یه سری کلک ها میتونه اونو تقلید کنه .مثل کد زیر:
function f()
{
console.log(this.x);
}
function g(){
this.x=3;
f.call(this);
}
var x=5;
var t=new g();
این جمله مقداری جابجاست بنظرم
در مورد این موضوع هم اتفاقا همین موضوع درست تره چون چیزی که در block ای تعریف شده نباید از خارج از block اش قابل دسترس باشه که اگر باشه میتونه کلی تداخل ایجاد کنه در یک برنامه و همه چیز رو بهم بریزه
حرف آقای موسوی کاملا صحیحه. حتی IIFE (Immediately Invoked Function Expression) ها هم برای حل مشکل scope ها ارائه شدند.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟