let تعريف
آخر تحديث: 2026-10-13
let تعريف
| التصنيف | تصريح المتغيرات |
|---|
⚙️ المعاملات
| 变量名 | |
|---|---|
| 初始值 |
يعدّل القيمة الأصلية:لا (يُعيد قيمة جديدة)
💡 تلميح
⚠️ تحذير
🌐 دعم المتصفح
| المتصفح | |||||
|---|---|---|---|---|---|
| let | ✓ v49 | ✓ v12 | ✓ v44 | ✓ v10 | ✓ v36 |
| مدعوم في جميع المتصفحات الحديثة | |||||
🏷️ تصريحات ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
📚 دروس ذات صلة
❓ أسئلة شائعة
Qما الفرق بين let و var؟
Aثلاثة أمور: أولاً النطاق، فـ let نطاقي للكتلة (يصلح داخل {} فقط)، أما var فنطاقي للدالة وقد يتسرّب إلى الكائن العام؛ ثانياً إعادة التعريف، فـ let تمنعها بينما var يسمح بها؛ ثالثاً سلوك الرفع (hoisting)، فـ let تُبقي الربط في المنطقة الميتة المؤقتة (TDZ) وتُطلق خطأً عند الوصول إليه قبل الإعلان، بينما var يُرجع undefined بصمت.
Qلماذا استخدام متغير let قبل إعلانه يتسبب في خطأ؟
Aالمنطقة الواقعة بين دخول النطاق وتنفيذ عبارة إعلان let تُسمى المنطقة الميتة المؤقتة (TDZ). المتغير يكون مسجّلاً لكنه غير مُهيَّأ، لذا فإن لمسه يُطلق خطأ ReferenceError. وهذا مقصود بالتصميم: فهو يمنع الأخطاء الصامتة الناتجة عن undefined التي يتيحها var.
Qلماذا يتصرف let بشكل مختلف داخل الحلقات؟
Aمع let، تحصل كل تكرارٍ (iteration) على نسخة خاصة به من متغير الحلقة (مع انتقال القيمة السابقة إليها)، فيلتقط كل إغلاق (closure) قيمته الخاصة. أما مع var فلا يوجد سوى ربط واحد مشترك، لذا تلاحظ كل دوال الاستدعاء القيمة الأخيرة لاحقاً.