JavaScript: أنواع البيانات في جافاسكريبت
آخر تحديث: 2026-10-13
أنواع البيانات تحدد العمليات التي يمكنك تنفيذها — الأرقام تدعم الحسابات، والنصوص تدعم الربط، والقيم المنطقية تدعم الشروط. فهم الأنواع يساعدك على تجنب أكثر فخاخ JS كلاسيكية.
1. أنواع البيانات في JS
تحتوي جافاسكريبت على 8 أنواع بيانات، مقسمة إلى بدائل وأنواع مرجعية:
بدائل (7 أنواع): String، Number، BigInt، Boolean، Undefined، Null، Symbol
نوع مرجعي (نوع واحد): Object (المصفوفات، الدوال، التواريخ، إلخ كلها أنواع فرعية من Object)
البيانات البديلة تُخزن في ذاكرة المكدس وتُنسخ بالقيمة أثناء التعيين. البيانات من النوع المرجعي تُخزن في ذاكرة الكومة وتُنسخ بالمرجع (العنوان) أثناء التعيين. سيتم تغطية هذا التمييز بالتفصيل في الدروس اللاحقة.
typeof هو عامل يتحقق من أنواع البيانات ويعيد نصًا:
| القيمة | نتيجة typeof |
|---|---|
"مرحبا" |
"string" |
42 |
"number" |
9007199254740991n |
"bigint" |
true |
"boolean" |
undefined |
"undefined" |
null |
"object" (خطأ تاريخي) |
{ } |
"object" |
function(){} |
"function" |
ملاحظة: typeof null يعيد "object" — هذا خطأ تاريخي من بداية JS لا يمكن إصلاحه (تغييره سيكسر الكود الموجود). فقط تذكره.
2. فخاخ النص والأرقام
عامل + في JS يخدم غرضين: الجمع العددي وربط النصوص. عندما يكون أحد طرفي + نصًا، يحول JS القيمة الأخرى إلى نص أيضًا:
"5" + 3يصبح"53"(ربط نصي، ليس رياضيات)5 + 3يصبح8(جمع رياضي)"5" - 3يصبح2(الطرح ليس لديه دلالات ربط،🦄 auto-يحول إلى أرقام)
هذا هو أحد أكثر فخاخ JS كلاسيكية — كل مبتدئ يقع فيه. الحل: استخدم Number() أو parseInt() للتحويل الصريح قبل العمليات الحسابية.
3. null مقابل undefined
كلاهما يعني "لا قيمة"، لكنهما يختلفان في النية:
- undefined: متغير تم إعلانه لكن لم يُعيَّن، أو خاصية غير موجودة — "لم تُعطَ قيمة بعد"
- null: المطور عيّنه صراحة كفارغ — "تم تعيينه عمدًا كلا شيء"
فكر فيها بهذه الطريقة: undefined هو منزل جديد بدون أثاث بعد؛ null هو عندما نقلت جميع الأثاث عمدًا.
▶ مثال: typeof مع أنواع مختلفة
▶ جرّب الكود▶ مثال: فخاخ النص والأرقام
▶ جرّب الكود▶ مثال: null مقابل undefined
▶ جرّب الكود▶ مثال: جميع أنواع البيانات في لمحة
▶ جرّب الكود❓ أسئلة شائعة
typeof null "object"؟null كانت جميع بتاتها المنخفضة صفراً — مثل مُعرّف الكائن — لذلك تم تصنيفها بشكل خاطئ. حاولوا إصلاحها لاحقًا، لكن تغييرها سيكسر الكثير من الكود الموجود،🦄 أصبح الخطأ دائمًا. إنه مثل مبنى بأساس مائل — يعيش فيه🦄 أشخاص لهدمه.typeof يُرجع "object" لكلتا المصفوفات والكائنات،🦄 لا يمكنه التمييز بينهما. الطريقة الصحيحة هي Array.isArray() — على سبيل المثال، Array.isArray([1,2]) يُرجع true، بينما Array.isArray({}) يُرجع false.NaN (ليس رقمًا) لديه typeof NaN يُرجع "number". الأكثر غرابة أن NaN === NaN يُرجع false — ليس حتى مساويًا لنفسه. استخدم isNaN() أو Number.isNaN() للتحقق من NaN.📖 ملخص
- لدى JS 8 أنواع بيانات: 7 بدائل + 1 نوع مرجعي (Object)
- عامل
typeofيتحقق من الأنواع، لكنtypeof nullيعيد"object"— خطأ تاريخي +يربط عندما يكون هناك نص —"5" + 3يعطي"53"، وليس8`nullيعني "فارغ عمدًا";undefinedيعني "لا قيمة بعد" — ليسا متساويين صارمًا- استخدم
Number()أوparseInt()للتحويل الصريح قبل العمليات الحسابية لتجنب فخاخ الإكراه الضمني - المصفوفات
[]أيضًا تُرجع"object"من typeof — استخدمArray.isArray()للتمييز بين المصفوفات والكائنات
📝 تمارين
- أساسي: أعلن 6 متغيرات لـ 6 أنواع بدائل (String، Number، Boolean، Undefined، Null، Object)، استخدم
typeofعلى كل منها، واعرض النتائج على الصفحة. - متوسط: أنشئ صفحة بها حقل إدخال. عندما يدخل المستخدم أي قيمة، يكتشف JS نوعها باستخدام typeof ويعرض النتيجة. جرّب إدخال أرقام، نصوص، true، null، إلخ، ولاحظ مخرجات typeof.
- تحدي: أنشئ صفحة "اختبار فخاخ الأنواع" بها 5 أسئلة اختيار من متعدد تختبر معرفة إكراه الأنواع، مثل ما قيمة
"1" + 2، وما إذا كانnull == undefinedصحيحًا أم خاطئًا، إلخ. اعرض تغذية راجعة صحيحة/خاطئة مع التفسيرات عندما ينقر المستخدم على خيار.