بلوکتابعسراسری
محدودههای اسکوپ در جاوااسکریپت: بلوک، تابع و سراسری
درک اسکوپ (Scope) یکی از پایهایترین مفاهیم در جاوااسکریپت است که تعیین میکند متغیرها و توابع در چه محدودهای قابل دسترسی هستند. این مفهوم به سه دسته اصلی تقسیم میشود:
- اسکوپ بلوکی (Block Scope)
- اسکوپ تابعی (Function Scope)
- اسکوپ سراسری (Global Scope)
1. اسکوپ بلوکی (Block Scope)
با معرفی let و const در ES6، اسکوپ بلوکی به جاوااسکریپت اضافه شد. متغیرهای تعریف شده با این کلمات کلیدی فقط در داخل بلوک {} مربوطه قابل دسترسی هستند:
مثال | توضیح |
---|---|
if (true) { let x = 10; console.log(x); // 10 } console.log(x); // Error |
متغیر x فقط در داخل بلوک if در دسترس است |
2. اسکوپ تابعی (Function Scope)
متغیرهای تعریف شده با var دارای اسکوپ تابعی هستند، یعنی فقط در داخل تابعی که تعریف شدهاند قابل دسترسی هستند:
- متغیرهای var به بیرون از تابع نشت نمیکنند
- این متغیرها حتی اگر در بلوکهای داخلی تعریف شوند، در کل تابع در دسترس هستند
توجه: برخلاف let و const، متغیرهای var دارای Hoisting هستند و میتوانند قبل از تعریف استفاده شوند (با مقدار undefined).
3. اسکوپ سراسری (Global Scope)
متغیرهایی که خارج از هر تابع یا بلوکی تعریف میشوند، دارای اسکوپ سراسری هستند و در تمام قسمتهای کد قابل دسترسی میباشند:
let globalVar = 'من سراسری هستم'; function showVar() { console.log(globalVar); // قابل دسترسی } |
برای یادگیری عمیقتر درباره اسکوپ در جاوااسکریپت، میتوانید به آموزش جامع وارد شوید مراجعه کنید.
نکته مهم: استفاده نادرست از متغیرهای سراسری میتواند باعث بروز مشکلاتی مانند تداخل نام متغیرها و کاهش خوانایی کد شود. همیشه سعی کنید محدوده متغیرها را تا حد ممکن کوچک نگه دارید.