Reza Vr
Reza Vr
خواندن ۲ دقیقه·۳ سال پیش

Scope in javascript *1


سلام..

اسکوپ ها یکی از مباحث fundamental جاوا اسکریپت هستش که هر توسعه دهنده جاوااسکریپت باید یه دانشی ازش داشته باشه!


ما کلا توی زبان های برنامه نویسی دو نوع اسکوپ داریم :

1- Lexical scope

2- Dynamic scope

که جاوااسکریپت از مورد اول یعنی lexical scope برخورداره که قراره توی این مقاله راجب اون بحث کنیم.


خب lexical scope یعنی چی ؟!

یعنی اینکه ما بتونیم قبل از اجرا کردن کد، محدوده ای که identifier(متغیر،فانکشن ...) قابل دسترسی هستن رو تشخیص بدیم، همین :)

توی جاوااسکریپت سه نوع اسکوپ داریم که یجورایی می شه گفت سه قانون مختلف از lexical scope هستش .


3 نوع اسکوپ در جاوااسکریپت :

1- Global Scope

2- Function/Local Scope

3- Block Scope

خب بریم سراغ تعریفشون :)

  • Global Scope :

بالایی ترین لایه یا محدوده ای که توش کد می زنید همین گلوبال اسکوپه :)

اولین کد هاتون رو ازاین محدوده شروع می کنید و می نویسید و خب همونطور که می دونید هر Identifierی که توی این محدوده تعریف بشه در کل محدوده برنامه قابل دسترسیه .


  • Function/Local Scope :

همونطور که از اسمش پیداس به محدوده درونی فانکشن ها اشاره می کنه :)

قانون این اسکوپ این هستش که متغیر های تعریف شده درون فانکشن، بیرون از فانکشن قابل دسترسی نیستن حتی اگه متغیر با var تعریف شده باشه! اما برعکس می تونیم ازمتغیر تعریف شده داخل این اسکوپ در اسکوپ های فرزند استفاده کنیم :).



  • Block Scope :

این اسکوپ هم به محدوده های if,else,switch,for,try و.. اشاره می کنه .

فرقش با فانکشن اسکوپ اینه که اگه درون این اسکوپ متغیری با var تعریف بشه بیرون از این اسکوپ قابل دسترسیه .


خب تا اینجای کار با مفهوم lexical scope و انواعی که داره، آشنا شدیم!

توی مقاله بعدی عمیق تر بررسی می کنیم که این قوانین به چه شکلی توی کامپایل شدن کار می کنن و با اصطلاحات جدید تری اشنا می شیم :)


  • نکته: من مثل همیشه درحال یادگیریم و مقاله نوشته شده براساس چیزهایی هست که یادگرفتم،پس اگر نقضی یا عیبی دید لطفا توی کامنت ها اعلام کنید تا هم من و هم باقی دوستان نکته جدیدی رو یادبگیریم.
scopejsاسکوپlexical scopelexical
salam
شاید از این پست‌ها خوشتان بیاید