في هذا الدرس 6تصفّح المواضيع
تتم عملية تحويل القيمة من نوع بيانات إلى آخر في JavaScript عبر مسارين مختلفين تماماً:
- التحويل الصريح (Explicit Conversion): يستدعي فيه المطور دالة تحويل واضحة بيده مثل
Number("42")أوString(42)ليكون القصد البرمجي جلياً ومضمون النتيجة. - التحويل الضمني التلقائي (Implicit Coercion): يجريه المحرك خفيةً عند خلط أنواع مختلفة في معادلة واحدة؛ فالتعبير
"5" * 2يحول النص لرقم ويعطي10، بينما"5" + 2يحول الرقم لنص ويعطي"52"!
تحول الدالة القياسية String(value) (دون كتابة الكلمة new قبلها) أي قيمة في اللغة بأمان تام إلى مقابلها النصي؛ فاستدعاء String(2026) ينتج "2026"، وString(null) ينتج "null".
ورغم توفر أسلوب .toString() على الأرقام، تظل دالة String(value) الأكثر أماناً لأن استدعاء .toString() على null أو undefined يطلق خطأ TypeError.
توفر JavaScript ثلاث دوال رئيسية لاستخلاص الأرقام من النصوص، ولكل منها سلوك دقيق مختلف يجب إتقانه:
| الدالة | قاعدة التحليل الرقمي | "45.8px" | " 42 " | نص فارغ "" |
|---|---|---|---|---|
Number(val) | تحويل صارم لكامل النص بعد تجاهل المسافات الطرفية | NaN | 42 | 0 |
parseInt(str, 10) | تقرأ العدد الصحيح من البداية وتتوقف عند أول حرف | 45 | 42 | NaN |
parseFloat(str) | تقرأ العدد العشري من البداية وتتوقف عند أول حرف | 45.8 | 42 | NaN |
const priceInput = '129.75';
const badgeWidth = '240px';
const total = Number(priceInput) + 20;
const widthNum = parseInt(badgeWidth, 10);
document.getElementById('conv-out').textContent =
'Total: ' + total + ' | Width: ' + widthNum;
عند فشل التحويل الرقمي لنص غير صالح مثل Number("hello") أو Number(undefined)، لا ينهار البرنامج بل يرجع القيمة الخاصة NaN اختصاراً لعبارة «ليس رقماً صالحاً» (Not-a-Number).
ومن الطريف تقنياً أن typeof NaN يرجع "number"، كما أن أي عملية حسابية تدخل فيها NaN تنتج NaN؛ وانتبه للفرق المهم: Number(null) تعطي 0 بينما Number(undefined) تعطي NaN.
تصنف الدالة Boolean(value) أي قيمة في اللغة إلى صادقة (Truthy) أو كاذبة (Falsy). يكفيك حفظ القيم الست الكاذبة (Falsy) التي تتحول إلى false، وما عداها في اللغة بأسرها يتحول إلى true (حتى النص "0" والمصفوفة الفارغة []!):
- القيمة
false - الصفر الرقمي
0(وكذلك-0و0n) - النص الفارغ تماماً بلا مسافة
"" - القيمة
null - القيمة
undefined - قيمة فشل الرقم
NaN
أشهر أخطاء التحويل الضمني في تطبيقات الويب تقع مع معامل الجمع +؛ فإذا كان أحد طرفيه نصاً يتحول المعامل فوراً من الجمع الرياضي إلى لصق النصوص، فتصبح تكلفة السلة 100 + "15" مساويةً للنص الكارثي "10015"! تحويل المدخلات صراحةً عبر Number(...) فور استلامها يقضي على هذه المفاجآت جذرياً.
const subtotalText = '350';
const deliveryText = '25';
const buggySum = subtotalText + deliveryText;
const safeSum = Number(subtotalText) + Number(deliveryText);
document.getElementById('cart-fix').textContent =
'Buggy: ' + buggySum + ' | Safe: ' + safeSum;
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
فرّقت في هذا الدرس بين التحويل الصريح والضمني، وأتقنت الدوال String() وNumber() وparseInt() وparseFloat() وBoolean()، وفهمت أسباب ظهور NaN والقيم الست الكاذبة Falsy. الخطوة التالية: انتقل الآن إلى درس «الأرقام وكائن Math في JavaScript» لضبط الكسور العشرية وتطبيق الدوال الرياضية المدمجة.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Explicit Conversion التحويل الصريح للنوع
- تحويل نوع القيمة بصورة مقصودة وواضحة باستخدام دوال اللغة القياسية مثل Number وString وBoolean.
- للمراجعة
- 02 Type Coercion التحويل الضمني التلقائي
- تحويل خفي يجريه محرك JavaScript تلقائياً عند تطبيق معامل على قيمتين من نوعين مختلفين.
- للمراجعة
- 03 NaN (Not-a-Number) القيمة الخاصة NaN
- قيمة رقمية خاصة تنتج عند فشل تحويل نص غير صالح إلى رقم أو إجراء عملية رياضية غير معرفة.
- للمراجعة
- 04 Falsy Value القيمة الكاذبة منطقياً Falsy
- إحدى القيم المحددة حصراً في اللغة التي تتحول عند فحصها منطقياً بالدالة Boolean إلى القيمة false.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات2
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 NaN NaN
- Not-a-Number
- قيمة خاصة تعني «ليس رقماً صالحاً» ترجعها دوال التحويل الرقمي عند تعذر قراءة عدد صحيح أو عشري.
- للمراجعة
- 02 UI UI
- User Interface
- واجهة المستخدم الرسومية التي تسلم حقولها النصية قيماً من نوع string تحتاج لتحويل صريح قبل الحساب.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اختر التبويب الثاني في محاكي التحويل لتتحقق من أن النص الفارغ يعطي false بينما المسافة الواحدة تعطي true.
-
افتح مثال سلة المشتريات في محرر التجربة وعدّل deliveryText إلى "40" لمقارنة الجمع الخاطئ بالجمع الآمن.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.