عند تعلّم 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); // ✅ مسموح — لم نُعِد الإسناد
جدول المقارنة
| الجانب | var | let | const |
|---|---|---|---|
| النطاق | دالة | كتلة | كتلة |
| إعادة التعيين | ✅ | ✅ | ❌ |
| إعادة التعريف | ✅ | ❌ | ❌ |
| الاستخدام اليوم | تجنّبها | عند الحاجة للتغيير | الافتراضي |
القاعدة الذهبية
استخدم
constدائمًا، إلّا إذا كنت ستغيّر القيمة فاستخدمlet. ولا تستخدمvarأبدًا.
هذه القاعدة وحدها تجنّبك معظم أخطاء المتغيّرات الشائعة.
الخلاصة
var من الماضي، وlet وconst هما الحاضر. ابدأ بـ const وستكتب كودًا أنظف
وأقلّ عرضةً للأخطاء.