نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
JS

منهج JavaScript

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج JavaScript/المتغيرات وأنواع التخزين (var, let, const)

المتغيرات وأنواع التخزين (var, let, const)

var let constالمتغيرات في جافاسكريبتالفرق بين let و constblock scope javascripthoisting var

جدول مرجعي سريع

1
الكلمةالنطاقإعادة التعيينإعادة التعريف
varالدالة (Function Scope)نعمنعم (خطير)
letالكتلة (Block Scope)نعملا
constالكتلة (Block Scope)لالا

الشرح

المتغير (Variable) هو حاوية تُخزّن قيمة يمكن استخدامها لاحقاً في الكود. تمتلك جافاسكريبت ثلاث كلمات لتعريف المتغيرات: var القديمة، وlet وconst الحديثتان اللتان ظهرتا مع ES6 عام 2015 وأصبحتا المعيار الموصى به اليوم.

var لها نطاق دالة (Function Scope) فقط، ويمكن إعادة تعريفها عدة مرات بنفس الاسم دون خطأ، وتخضع لظاهرة الـ Hoisting بشكل قد يُسبب أخطاء غير متوقعة. لهذه الأسباب أصبح استخدامها غير مستحسن في الكود الحديث إلا للحفاظ على توافق مع كود قديم.

let لها نطاق كتلة (Block Scope) أي أنها محصورة داخل الأقواس {} التي عُرّفت فيها (شرط، حلقة، دالة)، ولا يمكن إعادة تعريفها بنفس الاسم في نفس النطاق، لكن يمكن تغيير قيمتها. تُستخدم عندما تتوقع أن القيمة ستتغير لاحقاً، مثل عداد في حلقة تكرارية.

const تعني "ثابت" (Constant) — لها نفس نطاق let لكن لا يمكن إعادة تعيين قيمتها بعد التعريف الأول أبداً. القاعدة الذهبية في JavaScript الحديثة: استخدم const دائماً كخيار افتراضي، وانتقل إلى let فقط إذا كنت متأكداً أن القيمة ستتغير. ملاحظة مهمة: const تمنع تغيير المتغير نفسه، لكن إذا كانت القيمة كائناً أو مصفوفة، يمكنك تعديل محتوياتها الداخلية بحرية.

الصياغة (Syntax)

syntax
1var قديم = "لا يُنصح باستخدامه"; // نطاق دالة، Hoisting
2let قابل_للتغيير = "قيمة أولى"; // نطاق كتلة
3const ثابت = "لا يتغير أبداً"; // نطاق كتلة، غير قابل لإعادة التعيين
4
5قابل_للتغيير = "قيمة جديدة"; // مسموح مع let
6// ثابت = "خطأ"; // ❌ يرمي خطأ مع const

أمثلة عملية

مثال 1: let و const في التطبيق

let و const في التطبيق
1// الفرق بين let و const
2let عمر = 25;
3عمر = 26; // ✅ مسموح، القيمة تتغير
4
5const اسم = "محمد";
6// اسم = "أحمد"; // ❌ خطأ: Assignment to constant variable
7
8// const مع كائن: يمكن تعديل المحتوى وليس المتغير نفسه
9const مستخدم = { اسم: "سارة" };
10مستخدم.اسم = "ليلى"; // ✅ مسموح تماماً

مثال 2: مشكلة var مقابل let في نطاق الكتلة

مشكلة var مقابل let في نطاق الكتلة
1// مشكلة var الشهيرة: تسريب النطاق
2if (true) {
3 var x = 10;
4 let y = 20;
5}
6console.log(x); // 10 — تسرّب خارج الشرط!
7// console.log(y); // ❌ خطأ: y غير معرّف هنا

نصائح احترافية

  • —استخدم const كخيار افتراضي دائماً، وlet فقط عند الحاجة الحقيقية لتغيير القيمة.
  • —تجنب var تماماً في المشاريع الجديدة — احتفظ بمعرفتها فقط لفهم كود قديم.
  • —const لا تمنع تعديل محتويات الكائنات أو المصفوفات، بل تمنع فقط إعادة تعيين المتغير نفسه.
  • —أسماء المتغيرات حساسة لحالة الأحرف (Case-Sensitive): اسم و اسم متغيران مختلفان تماماً.

الدرس السابق

المخرجات وطرق العرض

الدرس التالي

أنواع البيانات الأساسية

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر