شرح Scope في JavaScript — أين تعيش المتغيرات وكيف نصل إليها؟
النطاق (Scope) يحدد أين يمكنك رؤية واستخدام المتغيرات التي قمت بتعريفها. ليس كل متغير متاحاً في كل مكان!
1. النطاق العام (Global Scope)
المتغير الذي يتم تعريفه خارج أي دالة يكون متاحاً في أي مكان في الكود.
النطاق العام:
let globalVar = "أنا متاح للجميع";
function test() {
console.log(globalVar); // يعمل بنجاح
}
2. النطاق المحلي (Local / Function Scope)
المتغير الذي يتم تعريفه داخل دالة يكون متاحاً فقط داخل تلك الدالة. لا يمكنك استخدامه خارجها.
النطاق المحلي:
function myFunc() {
let localVar = "أنا مخفي عن الخارج";
console.log(localVar); // يعمل
}
console.log(localVar); // خطأ! المتغير غير موجود هنا
3. نطاق الكتلة (Block Scope)
مع استخدام let و const، أصبح للمتغيرات نطاق داخل الأقواس { } الخاصة بـ if أو for أيضاً.
نطاق الكتلة:
if (true) {
let blockVar = "أنا داخل الـ if فقط";
}
console.log(blockVar); // خطأ!
نصيحة: حاول دائماً تقليل استخدام المتغيرات العامة (Global). كثرتها تجعل الكود صعب التتبع وقد تسبب تضارباً في الأسماء بين أجزاء الموقع المختلفة.
ملخص الدرس
- المتغيرات العامة متاحة في كامل ملف السكريبت.
- المتغيرات المحلية متاحة فقط داخل الدالة التي عرفت فيها.
letوconstيحترمان نطاق الأقواس{ }.- فهم النطاق يساعدك في تجنب أخطاء "Variable not defined".
الخطوة التالية: لنتعلم كيف نجمع بيانات مختلفة تصف شيئاً واحداً في مكان واحد باستخدام الكائنات (Objects).