تحويل النوع
فرّقت بين null و undefined. المهارة التالية: تغيير نوع القيمة عمدًا — اجعل الرقم نصًا للتسمية، أو النص رقمًا للحساب. هذا هو تحويل النوع. هنا نستخدم ثلاث دوال واضحة: String() و Number() و Boolean() — مع مفاجأة شائعة لـ +.
ما هو تحويل النوع في JavaScript؟
تحويل النوع يعني نقل القيمة من نوع إلى آخر. فضّل التحويل الصريح: String(42) يعطي "42"، وNumber("7") يعطي 7، وBoolean(0) يعطي false. إن لم يفهم Number النص تحصل على NaN. مع + إذا كان أحد الطرفين سلسلة غالبًا يحدث دمج نص لا جمع — اطبعها مرة لتتذكر.
أدوات التحويل
📊 تحويل النوع للمبتدئ
| الأداة / الفكرة | مثال | النتيجة / ملاحظة |
|---|---|---|
String(...) |
String(42) |
"42" (نص) |
Number(...) |
Number("7") |
7 (رقم) |
Boolean(...) |
Boolean(0) |
false (معاينة falsy) |
| نص غير رقمي | Number("hello") |
NaN — typeof ما زال "number" |
| فارغ → منطقي | Boolean("") |
false |
خلط مع + |
5 + "2" |
"52" (دمج، ليس 7) |
String() — اصنع نصًا
عندما تحتاج تسمية أو رسالة ضع القيمة داخل String(...). الأرقام والمنطقيات وnull وundefined تصبح سلاسل يمكن دمجها أو عرضها.
console.log(String(42));
console.log(String(true));
console.log(String(null));
console.log(String(undefined));
console.log(typeof String(42));
Number() — اصنع رقمًا
استخدم Number(...) عندما يجب أن يصبح النص جاهزًا للحساب. السلاسل الرقمية تتحول بسلاسة. النص غير الرقمي يصبح NaN.
console.log(Number("7"));
console.log(Number("3.5"));
console.log(Number(true));
console.log(Number(false));
console.log(typeof Number("7"));
عندما يفشل Number — NaN
Number("hello") يعطي NaN. تذكّر من درس الأرقام: typeof NaN ما زال "number". اعتبر NaN تحويلًا فاشلًا لا عددًا صالحًا.
console.log(Number("hello"));
console.log(typeof Number("hello"));
console.log(Number(""));
console.log(Number(null));
Number("") وNumber(null) يصبحان 0 — فخ آخر للمبتدئ. عندما تقصد كمية حقيقية أعطِ سلسلة أرقام واضحة.
Boolean() — نعم/لا من قيمة
Boolean(...) يحول القيمة إلى true أو false. القيم الفارغة مثل 0 و"" وnull وundefined وNaN تصبح false. السلاسل غير الفارغة ومعظم الأرقام تصبح true. قائمة truthy / falsy الكاملة في الدرس التالي — هنا تكفيك الدالة.
console.log(Boolean(1));
console.log(Boolean(0));
console.log(Boolean("hi"));
console.log(Boolean(""));
console.log(Boolean(null));
مفاجأة + — دمج أم جمع؟
إذا كان أحد طرفي + سلسلة، غالبًا يلصق JavaScript النص بدل الجمع. عندما تقصد حسابًا حوّل أولًا بـ Number().
console.log(5 + 2);
console.log(5 + "2");
console.log(Number("5") + Number("2"));
console.log("Score: " + 10);
اعرض التحويلات على الصفحة
حوّل قيمًا قليلة ثم اكتب تسميات قصيرة بـ textContent.
<!DOCTYPE html>
<html>
<head>
<title>Type conversion — labels</title>
</head>
<body>
<p id="out">…</p>
<script>
let raw = "12";
let asNumber = Number(raw);
let asText = String(asNumber);
let flag = Boolean(asNumber);
document.getElementById("out").textContent =
"raw=" + raw +
" | number=" + asNumber +
" | text=" + asText +
" | flag=" + flag;
</script>
</body>
</html>
تُظهر الفقرة الفكرة بثلاثة أشكال. غيّر raw إلى "0" وحدّث الصفحة وشاهد flag يصبح false بينما الرقم ما زال 0.
جرّبها بنفسك
- اطبع
String(99)وString(false)وtypeof String(99). - اطبع
Number("8")وNumber("8") + 2— توقّع حسابًا لا"82". - اطبع
Number("oops")وtypeofللنتيجة (NaNوما زال"number"). - اطبع
Boolean("")وBoolean("ok"). - اطبع
3 + "4"ثم أعد الكتابة بـNumber("3") + Number("4"). - في عرض HTML اجعل
raw="0"وحدّث واقرأflagالجديد.
أخطاء شائعة
- افتراض أن
+يجمع دائمًا — وجود سلسلة قد يسبب دمجًا - تجاهل
NaNبعدNumber("hello")واستخدامه في الحساب - ظن أن هذا الدرس يغني عن truthy / falsy —
Boolean()معاينة فقط - توقع أن
String(null)هو""— الناتج النص"null" - نسيان فحص
typeofعندما تبدو النتيجة غريبة
خلاصة
- تحويل النوع: تغيير نوع القيمة عمدًا
- فضّل
String()وNumber()وBoolean()للوضوح - نص غير رقمي →
NaN؛typeof NaNما زال"number" +مع سلسلة غالبًا يدمج — حوّل قبل الجمع- التالي: truthy و falsy — أي القيم تتصرف كـ true أو false في الشروط
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى