تعریف Scope : محدوده ای که یک متغیر یا یک تابع قابل دسترسی هستش و ما میتونیم بیایم و از اون استفاده بکنیم
به طور کلی به دو دسته local و global تقسیم بندی میشوند
نکته : متغیر هایی که به صورت گلوبال تعریف میشوند رو ما میتونیم به وسیله آبجکت window بیایم و از اونها دسترسی بگیریم و استفاده بکنیم
تعریف Hoisted : وقتی ما میایم و یک تابع به صورت فانکشن استراکتور تعریف میکنیم جاوااسکریگت موقع اجرا میاد واون هارو در اول برنامه تعریف میکنه و ما میتونیم بیایم و قبل تعریف توابع از اونها استفاده بکنیم علاوه بر این جور توابع متغیرهایی که با var تعریف میشوند هم همین طور هستند
نکته : متغیر هایی که با var تعریف میشوند دو تا مرحله دارند یک declaration و دومی assignment که اولی همون اول میاد و در بالای همه کدها اتفاق میافتد ولی دومی در جایی که تعریف کردیم و مقدار دهیش کردیم میاد و اتفاق میافتد
کلمه کلیدی let : یک کلمه کلیدی برای تعریف متغیرها هستش ولی به صورت بلاک اسکوپ هستش
تفاوتهای let و var
1 - در حلقهها با let متغیر به Scope حلقه محدود میشود
2 - در متغیرهای تعریف شده با let در حالت گلوبال اسکوپ در window در دسترس نیستند
3 - اجازه تعریف مجدد متغیر تعریف شده با let را درهمان اسکوپ نداریم
4 - متغیرهای تعریف شده با let امکان hoisted شدن ندارند