الفرق بين var و let و constJavaScript var let constشرح var و let و constما هو var في جافاسكربتما هو let في جافاسكربتما هو const في جافاسكربتتعريف المتغيرات في JavaScriptvar let const بالعربيمتى نستخدم var و let و constأمثلة var let const
مقدمة عن الفرق ما بين الـ var و let و const
عند تعلم JavaScript ستجد نفسك كثيرًا ما تحتاج إلى تعريف المتغيرات
(Variables). ومع تطور اللغة عبر السنوات، أصبح لدينا ثلاث طرق أساسية
للتصريح عن المتغيرات: var و let و const. وقد يختلط
الأمر على الكثير من المبرمجين المبتدئين حول متى يستخدم كل واحد منها وما
هو الفرق بينهم.
1. ما هو var؟
- التاريخ:
varهي الطريقة القديمة والأصلية لتعريف المتغيرات في JavaScript منذ بداياتها. - النطاق (Scope): المتغيرات المعرفة باستخدام
varلها function scope، أي تكون متاحة في كامل الدالة التي عُرفت داخلها. - إعادة التعريف: يمكن إعادة تعريف نفس المتغير أكثر من مرة باستخدام
varبدون مشاكل.
مثال:
var name = "Ali";
var name = "Omar"; // لا يوجد خطأ
console.log(name); // Omar
2. ما هو let؟
- التاريخ: تمت إضافته في ES6 (سنة 2015) لتحسين التعامل مع المتغيرات.
- النطاق (Scope): المتغيرات المعرفة بـ
letلها block scope، أي تكون متاحة فقط داخل{ }التي عُرفت فيها. - إعادة التعريف: لا يمكن إعادة تعريف نفس المتغير داخل نفس النطاق.
مثال:
let age = 20;
age = 25; // ممكن نغيّر القيمة
// let age = 30; ❌ خطأ: لا يمكن إعادة تعريف نفس المتغير في نفس النطاق
console.log(age); // 25
3. ما هو const؟
- الوظيفة: يستخدم لتعريف متغيرات ثابتة القيمة (لا يمكن تغييرها).
- النطاق (Scope): مثل
let، له block scope. - إعادة التعيين: لا يمكن تغيير قيمة المتغير بعد تعريفه.
مثال:
const pi = 3.14;
// pi = 3.14159; ❌ خطأ: لا يمكن تغيير القيمة
console.log(pi); // 3.14
⚠️ ملاحظة مهمة: إذا كان المتغير عبارة عن Object أو Array، فإن
const تمنعك من إعادة إسناد متغير جديد، لكنها لا تمنع تعديل المحتوى
الداخلي.
مثال:
const user = { name: "Ali" };
user.name = "Omar"; // ✅ مسموح
console.log(user); // { name: "Omar" }
4. جدول مقارنة سريع
| الخاصية | var | let | const |
|---|---|---|---|
| نطاق المتغير (Scope) | Function Scope (متاح فقط داخل الدالة) | Block Scope (داخل الأقواس {} فقط) |
Block Scope (داخل الأقواس {} فقط) |
| إعادة التعريف (Redeclare) | ✅ ممكن إعادة تعريفه في نفس النطاق | ❌ غير ممكن | ❌ غير ممكن |
| إعادة الإسناد (Reassign) | ✅ مسموح | ✅ مسموح | ❌ غير مسموح |
| التهيئة (Initialization) | ممكن تعريفه بدون قيمة | ممكن تعريفه بدون قيمة | يجب إعطاؤه قيمة عند التعريف |
| الرفع (Hoisting) | يتم رفعه لأعلى الكود بقيمة undefined |
يتم رفعه لكن لا يمكن استخدامه قبل التعريف (Temporal Dead Zone) | يتم رفعه لكن لا يمكن استخدامه قبل التعريف (Temporal Dead Zone) |
| الأمان في الكود | أقل أمانًا ويسبب مشاكل | أكثر أمانًا | الأكثر أمانًا |
5. متى تستخدم كل واحد؟
- استخدم
constبشكل افتراضي دائمًا إذا لم تكن بحاجة لتغيير القيمة. - استخدم
letعندما تحتاج متغير يمكن تغيير قيمته. - تجنب استخدام
varإلا في حالات نادرة أو عند التعامل مع كود قديم جدًا.
الخلاصة
varقديم ويعمل على مستوى الدالة.letوconstأحدث وأكثر أمانًا ويعملان على مستوى البلوك.- القاعدة الذهبية: ابدأ دائمًا بـ
const، وإذا احتجت تغيّر القيمة استخدمlet.
آخر تحديث: ١ أكتوبر ٢٠٢٥
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال
جاري تحميل التعليقات...