من أكثر الأسئلة التي يطرحها المبتدئون في JavaScript: ما الفرق بين var وlet وconst؟ في الواقع، معرفة الفرق بينهم ليست ترفاً — بل هي أساس لكتابة كود نظيف وآمن. في هذا المقال سنشرح ك
ل واحد منهم بأمثلة عملية واضحة.
أولاً: var — الطريقة القديمة
var هي الطريقة الأولى للإعلان عن المتغيرات في JavaScript، وكانت هي الوحيدة قبل ES6 سنة 2015. لكنها تحمل بعض المشاكل التي تجعل المطورين يتجنبونها اليوم.
خصائص var:
- Function Scope: المتغير المُعلَن بـ var يكون متاحاً داخل الدالة بأكملها.
- Hoisting: يُرفع إعلانه لأعلى الكود تلقائياً، مما قد يسبب أخطاء غير متوقعة.
- يمكن إعادة إعلانه: يمكنك كتابة var x مرتين في نفس الكود دون خطأ.
مثال:
var x = 10;
var x = 20; // لا خطأ!
console.log(x); // 20
if (true) {
var y = 5;
}
console.log(y); // 5 — متاح خارج الـ if!
ثانياً: let — الحل الأحدث
جاء let مع ES6 ليحل مشاكل var. وهو الآن الخيار الموصى به لمعظم المتغيرات.
خصائص let:
- Block Scope: المتغير متاح فقط داخل الكتلة {} التي أُعلن فيها.
- لا يمكن إعادة إعلانه: سيعطيك خطأ إذا حاولت إعلانه مرتين.
- يمكن تغيير قيمته: بعد الإعلان يمكنك تعديل القيمة.
مثال:
let count = 0;
count = 5; // مسموح
if (true) {
let z = 10;
}
console.log(z); // خطأ! z غير معرّف هنا
ثالثاً: const — للقيم الثابتة
const تُستخدم للقيم التي لن تتغير أبداً بعد تعيينها. وهي أيضاً من مستجدات ES6.
خصائص const:
- Block Scope: مثل let تماماً.
- لا يمكن تغيير قيمتها: بعد التعيين لا يمكن إعادة تعيين قيمة جديدة.
- يجب التهيئة عند الإعلان: لا يمكنك كتابة const x; دون قيمة.
مثال:
const PI = 3.14159;
PI = 3; // خطأ! لا يمكن تغيير const
const user = { name: "أحمد" };
user.name = "محمد"; // مسموح! (تغيير محتوى الكائن وليس المتغير نفسه)
user = {}; // خطأ!
جدول مقارنة سريع
| الخاصية | var | let | const |
|---|---|---|---|
| النطاق (Scope) | Function | Block | Block |
| Hoisting | نعم | جزئي | جزئي |
| إعادة الإعلان | مسموح | غير مسموح | غير مسموح |
| تغيير القيمة | مسموح | مسموح | غير مسموح |
متى تستخدم كل واحد؟
- استخدم const دائماً كخيار أول — إذا كانت القيمة لن تتغير.
- استخدم let عندما تحتاج لتغيير القيمة لاحقاً (كعدادات الحلقات).
- تجنب var في الكود الحديث — ما تزال تعمل لكنها تسبب مشاكل.
نصيحة عملية
القاعدة الذهبية التي يتبعها معظم المطورين المحترفين: ابدأ دائماً بـ const، وإذا احتجت لتغيير القيمة انتقل لـ let، وتجنب var تماماً في مشاريعك الجديدة.
خلاصة
فهم الفرق بين var وlet وconst هو خطوة أساسية في تعلم JavaScript الاحترافي. كتابة كود واضح ومنظم يبدأ من اختيار الكلمة المفتاحية الصحيحة لكل متغير. اعتمد هذه القاعدة من اليوم وستلاحظ فرقاً كبيراً في جودة كودك.