سؤال في البرمجة وإجابته
سؤال: ما هو الفرق بين let و var و const في JavaScript؟
إجابة:
في JavaScript، توجد ثلاثة طرق لتعريف المتغيرات: var و let و const. كل منها له خصائص واستخدامات معينة:
var:- نطاق المتغير (Scope):
- نطاق الدالة: المتغيرات المعرفة باستخدام
varتكون متاحة في جميع أنحاء الدالة التي تم تعريفها فيها. - إذا تم تعريف
varخارج الدالة، سيكون له نطاق عالمي.
- نطاق الدالة: المتغيرات المعرفة باستخدام
- Hoisting:
- المتغيرات المعرفة باستخدام
varتُرفع إلى أعلى نطاقها، ولكن تعيين القيمة يبقى في مكانه. هذا يعني أنه يمكن استخدام المتغير قبل تعريفه.
- المتغيرات المعرفة باستخدام
- إعادة التعريف:
- يمكن إعادة تعريف نفس المتغير باستخدام
varفي نفس النطاق.
- يمكن إعادة تعريف نفس المتغير باستخدام
javascriptconsole.log(x); // undefined var x = 5; console.log(x); // 5- نطاق المتغير (Scope):
let:- نطاق المتغير (Scope):
- نطاق الكتلة: المتغيرات المعرفة باستخدام
letتكون متاحة فقط داخل الكتلة التي تم تعريفها فيها (كتلة بين قوسين{}).
- نطاق الكتلة: المتغيرات المعرفة باستخدام
- Hoisting:
letيُرفع إلى أعلى الكتلة ولكنه لا يُهيأ. محاولة الوصول إلى المتغير قبل تعريفه ينتج عنها خطأReferenceError.
- إعادة التعريف:
- لا يمكن إعادة تعريف نفس المتغير باستخدام
letفي نفس النطاق.
- لا يمكن إعادة تعريف نفس المتغير باستخدام
javascriptconsole.log(y); // ReferenceError: Cannot access 'y' before initialization let y = 10; console.log(y); // 10- نطاق المتغير (Scope):
const:- نطاق المتغير (Scope):
- نطاق الكتلة: المتغيرات المعرفة باستخدام
constتكون متاحة فقط داخل الكتلة التي تم تعريفها فيها.
- نطاق الكتلة: المتغيرات المعرفة باستخدام
- Hoisting:
constيُرفع إلى أعلى الكتلة ولكنه لا يُهيأ. محاولة الوصول إلى المتغير قبل تعريفه ينتج عنها خطأReferenceError.
- إعادة التعريف وإعادة التعيين:
- لا يمكن إعادة تعريف أو إعادة تعيين نفس المتغير باستخدام
const. - يجب تعيين قيمة عند تعريف المتغير باستخدام
const.
- لا يمكن إعادة تعريف أو إعادة تعيين نفس المتغير باستخدام
javascriptconsole.log(z); // ReferenceError: Cannot access 'z' before initialization const z = 15; console.log(z); // 15 // z = 20; // TypeError: Assignment to constant variable.- نطاق المتغير (Scope):
ملخص:
var: نطاق الدالة، يمكن إعادة تعريفه، ويمكن استخدامه قبل تعريفه.let: نطاق الكتلة، لا يمكن إعادة تعريفه في نفس النطاق، ولا يمكن استخدامه قبل تعريفه.const: نطاق الكتلة، لا يمكن إعادة تعريفه أو إعادة تعيينه، ولا يمكن استخدامه قبل تعريفه.
استخدام let و const يعد أفضل ممارسة لتجنب المشاكل المحتملة المرتبطة بـ var مثل التسريب غير المقصود للمتغيرات إلى النطاقات العالمية أو الكتل العليا.

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