نطاق الكتلة والدالة والوحدة وTDZ
افهم نطاق الكتلة والدالة والوحدة؛ وشاهد TDZ عمليًا وتجنّب تسرّب المتغيرات.
نطاق الكتلة والدالة والوحدة وTDZ درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
مقدمة
الهدف: تعرّف مكان وجود المتغيرات ومتى يمكن استخدامها.
- نطاق الكتلة (let/const)
- نطاق الدالة (var)
- نطاق الوحدة
- أمان TDZ

تجربة نطاق الكتلة
يحافظ نطاق الكتلة على محلية المتغيرات ضمن زوج من الأقواس المعقوفة.
// Block scope: let/const exist only inside the braces
let lives = 3;
if (true) {
const bonus = 5;
let level = 1;
console.log("Inside block:", bonus, level);
}
console.log("Lives:", lives);
// Uncommenting next line would fail (not in scope):
// console.log(bonus, level);

نطاق الدالة مع var
يكون نطاق var هو نطاق الدالة (وليس نطاق الكتلة). فضّل let/const في JavaScript الحديثة.
// Function scope: var is visible across the whole function
function demo() {
if (true) {
var x = 10; // function-scoped
}
console.log("x is visible here:", x); // 10
}
demo();

أساسيات نطاق الوحدة
نطاق الوحدة: تكون الارتباطات في المستوى الأعلى محلية للملف (في وحدات ES).
// Module scope: top-level variables are local to the module file
const appName = "CoddyKit";
console.log("App name:", appName);
// In a real project, this would be its own file/module.
// Other files must import to access appName.

منطقة الموت الزمنية
يمنع TDZ عمليات القراءة المبكرة غير المقصودة. صرّح بالمتغير أولًا، ثم استخدمه.
// TDZ: using let/const before declaration throws ReferenceError
try {
// Uncommenting would trigger TDZ:
// console.log(mode); // ReferenceError
let mode = "dark";
console.log("Mode after declare:", mode);
} catch (e) {
console.log("Caught:", e.message);
}

مشكلات النطاق
مشكلات شائعة:
- لا تخلط var مع let/const في النطاق نفسه.
- صرّح بالمتغير قريبًا من موضع استخدامه.
- تجنب قراءة القيم قبل سطر التصريح بها (TDZ).

اختبار TDZ
تحقّق سريع: سلوك TDZ.

مراجعة
مراجعة: يكون نطاق let/const هو نطاق الكتلة؛ بينما يكون نطاق var هو نطاق الدالة؛ وللوحدات نطاق ملف خاص بها؛ ويمنع TDZ الوصول المبكر.

الأسئلة الشائعة
هل درس «نطاق الكتلة والدالة والوحدة وTDZ» مجاني؟
نعم — نص درس «نطاق الكتلة والدالة والوحدة وTDZ» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «نطاق الكتلة والدالة والوحدة وTDZ»؟
افهم نطاق الكتلة والدالة والوحدة؛ وشاهد TDZ عمليًا وتجنّب تسرّب المتغيرات. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «نطاق الكتلة والدالة والوحدة وTDZ»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- let وconst وتجنّب var
- نطاق الكتلة والدالة والوحدة وTDZ
- التسمية وقابلية القراءة والمشكلات الشائعة