تخطَّ إلى المحتوى

٢٨ يونيو ٢٠٢٦

الفرق بين var و let و const في جافاسكريبت

عند تعلّم JavaScript ستجد ثلاث طرق للتصريح عن المتغيّرات: var و let و const. الخلط بينها سبب شائع للأخطاء. لنوضّح الفرق بدقّة.

var — الطريقة القديمة ⚠️

var هي الطريقة الأصلية، لكنها تحمل سلوكًا مربكًا:

  • نطاقها دالة (function scope) وليس كتلة.
  • يمكن إعادة تعريفها بنفس الاسم دون خطأ.
  • تتأثّر بالـ hoisting فتُقرأ قبل تعريفها بقيمة undefined.
var x = 1;
var x = 2; // مسموح — قد يسبّب أخطاء صامتة

let — المتغيّر القابل للتغيير ✅

let حديثة وآمنة، نطاقها الكتلة { }، وتسمح بتغيير القيمة:

let count = 0;
count = 1; // ✅ مسموح

const — الثابت 🔒

const مثل let في النطاق، لكنها تمنع إعادة التعيين:

const PI = 3.14;
PI = 3.2; // ❌ خطأ: Assignment to constant variable

ملاحظة مهمّة: مع الكائنات والمصفوفات، const تمنع إعادة الإسناد فقط، لكن يمكنك تعديل محتواها الداخلي.

const arr = [1, 2];
arr.push(3); // ✅ مسموح — لم نُعِد الإسناد

جدول المقارنة

الجانبvarletconst
النطاقدالةكتلةكتلة
إعادة التعيين
إعادة التعريف
الاستخدام اليومتجنّبهاعند الحاجة للتغييرالافتراضي

القاعدة الذهبية

استخدم const دائمًا، إلّا إذا كنت ستغيّر القيمة فاستخدم let. ولا تستخدم var أبدًا.

هذه القاعدة وحدها تجنّبك معظم أخطاء المتغيّرات الشائعة.

الخلاصة

var من الماضي، وlet وconst هما الحاضر. ابدأ بـ const وستكتب كودًا أنظف وأقلّ عرضةً للأخطاء.

تعمّق أكثر في مسار JavaScript.

الأسئلة الشائعة

ما الفرق الأساسي بين let و const؟

let يسمح بإعادة تعيين قيمة المتغيّر لاحقًا، بينما const يمنع إعادة التعيين — قيمته ثابتة بعد الإسناد الأول.

لماذا يُنصح بتجنّب var؟

لأن var لها نطاق دالة (function scope) وتسبّب أخطاء غير متوقّعة بسبب الـ hoisting وإمكانية إعادة التعريف. let و const أكثر أمانًا ووضوحًا.

أيها أستخدم افتراضيًّا؟

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

اقرأ أيضًا

تصفّح كل المقالات في المدوّنة، أو ابدأ التعلّم من المسارات و خرائط الطريق.