Scope
1️⃣ تعریف Scope (دامنه دسترسی)
Scope مشخص میکند کجا یک متغیر قابل دسترسی است.
در جاوااسکریپت سه نوع scope اصلی داریم: Global, Function, Block
2️⃣ Global Scope (دامنه سراسری)
متغیرهایی که خارج از هر تابع تعریف میشوند، در کل برنامه قابل دسترسی هستند:
3️⃣ Function Scope (دامنه تابع)
متغیرهای تعریف شده داخل یک تابع فقط درون همان تابع قابل دسترسی هستند:
4️⃣ Block Scope (دامنه بلوک)
با let
و const
میتوان متغیرهای بلوکی تعریف کرد که فقط درون بلوک {}
قابل دسترسی هستند:
⚠️ با
var
متغیرها Block Scope ندارند و فقط Function Scope دارند
5️⃣ Nested Scope (دامنه تو در تو)
توابع داخلی به متغیرهای توابع بیرونی دسترسی دارند، اما برعکس نه:
6️⃣ Hoisting و Scope
-
متغیرهای
var
قبل از تعریف hoisted میشوند (بالا میروند) -
let
وconst
قبل از تعریف دسترسی ندارند (خطای ReferenceError)
✅ نکات مهم
-
Scope مشخص میکند متغیرها کجا قابل استفاده هستند.
-
Global
→ کل برنامه -
Function
→ داخل تابع -
Block
→ داخل بلوک{}
(با let/const) -
توابع داخلی میتوانند به متغیرهای بیرونی دسترسی داشته باشند.
-
Hoisting روی
var
اعمال میشود، ولیlet
وconst
نه.