السبت، 20 يوليو 2024

سؤال و جواب: المتغيرات في JavaScript

 


سؤال في البرمجة وإجابته

سؤال: ما هو الفرق بين let و var و const في JavaScript؟

إجابة:

في JavaScript، توجد ثلاثة طرق لتعريف المتغيرات: var و let و const. كل منها له خصائص واستخدامات معينة:

  1. var:

    • نطاق المتغير (Scope):
      • نطاق الدالة: المتغيرات المعرفة باستخدام var تكون متاحة في جميع أنحاء الدالة التي تم تعريفها فيها.
      • إذا تم تعريف var خارج الدالة، سيكون له نطاق عالمي.
    • Hoisting:
      • المتغيرات المعرفة باستخدام var تُرفع إلى أعلى نطاقها، ولكن تعيين القيمة يبقى في مكانه. هذا يعني أنه يمكن استخدام المتغير قبل تعريفه.
    • إعادة التعريف:
      • يمكن إعادة تعريف نفس المتغير باستخدام var في نفس النطاق.
    javascript

    console.log(x); // undefined var x = 5; console.log(x); // 5
  2. let:

    • نطاق المتغير (Scope):
      • نطاق الكتلة: المتغيرات المعرفة باستخدام let تكون متاحة فقط داخل الكتلة التي تم تعريفها فيها (كتلة بين قوسين {}).
    • Hoisting:
      • let يُرفع إلى أعلى الكتلة ولكنه لا يُهيأ. محاولة الوصول إلى المتغير قبل تعريفه ينتج عنها خطأ ReferenceError.
    • إعادة التعريف:
      • لا يمكن إعادة تعريف نفس المتغير باستخدام let في نفس النطاق.
    javascript

    console.log(y); // ReferenceError: Cannot access 'y' before initialization let y = 10; console.log(y); // 10
  3. const:

    • نطاق المتغير (Scope):
      • نطاق الكتلة: المتغيرات المعرفة باستخدام const تكون متاحة فقط داخل الكتلة التي تم تعريفها فيها.
    • Hoisting:
      • const يُرفع إلى أعلى الكتلة ولكنه لا يُهيأ. محاولة الوصول إلى المتغير قبل تعريفه ينتج عنها خطأ ReferenceError.
    • إعادة التعريف وإعادة التعيين:
      • لا يمكن إعادة تعريف أو إعادة تعيين نفس المتغير باستخدام const.
      • يجب تعيين قيمة عند تعريف المتغير باستخدام const.
    javascript
    console.log(z); // ReferenceError: Cannot access 'z' before initialization const z = 15; console.log(z); // 15 // z = 20; // TypeError: Assignment to constant variable.

ملخص:

  • var: نطاق الدالة، يمكن إعادة تعريفه، ويمكن استخدامه قبل تعريفه.
  • let: نطاق الكتلة، لا يمكن إعادة تعريفه في نفس النطاق، ولا يمكن استخدامه قبل تعريفه.
  • const: نطاق الكتلة، لا يمكن إعادة تعريفه أو إعادة تعيينه، ولا يمكن استخدامه قبل تعريفه.

استخدام let و const يعد أفضل ممارسة لتجنب المشاكل المحتملة المرتبطة بـ var مثل التسريب غير المقصود للمتغيرات إلى النطاقات العالمية أو الكتل العليا.


ليست هناك تعليقات:

إرسال تعليق

Post Top Ad

Your Ad Spot