Scope
در جاوااسکریپت، Scope محدودهای است که متغیرها، توابع و پارامترها در آن قابل دسترسی هستند.
Scope تعیین میکند متغیرها کجا قابل دسترس هستند و کجا نه.
🔹 انواع Scope در جاوااسکریپت
1. Global Scope (سطح جهانی)
-
متغیرهایی که در خارج از هر تابع یا بلاک تعریف شدهاند، در کل برنامه قابل دسترسی هستند.
2. Function Scope (محدوده تابع)
-
متغیرهایی که با
var
در یک تابع تعریف شدهاند، فقط داخل همان تابع قابل دسترسی هستند.
⚠️ توجه:
var
تابعمحور است، نه بلوکمحور.
3. Block Scope (محدوده بلوک)
-
متغیرهایی که با
let
یاconst
در یک بلوک{}
تعریف شدهاند، فقط داخل همان بلوک قابل دسترسی هستند.
🔹 Lexical Scope (محدوده لغوی)
-
جاوااسکریپت از Lexical Scoping استفاده میکند، یعنی متغیرها بر اساس محل تعریفشان در کد قابل دسترسی هستند.
🔹 Scope و Closure
-
Closure زمانی ایجاد میشود که یک تابع به متغیرهای خارج از خود دسترسی دارد.
-
این ویژگی برای حفظ دادههای خصوصی کاربرد دارد.
✅ خلاصه
-
Global Scope → کل برنامه
-
Function Scope → متغیرهای
var
داخل تابع -
Block Scope → متغیرهای
let
وconst
داخل بلوک -
Lexical Scope → دسترسی بر اساس محل تعریف متغیر
-
Closure → دسترسی تابع به متغیرهای بیرونی و حفظ وضعیت