الانتقال إلى المحتوى الرئيسي
الوحدة 2 · الدرس 4 من 48/32 في الدورة~8 min
دروس الوحدة (4/4)

نوع التحويلات

تحتاج طوال الوقت إلى تحويل نوع القيمة: value من يصل إدخال HTML كسلسلة حتى لو كان يمثل رقمًا، أو واجهة برمجة التطبيقات (API). بإرجاع السلاسل إلى التنسيق، فأنت بحاجة إلى تسجيل كائن كنص. عروض شبيبة ثلاث عائلات من التحويلات: المحللون الصريحون والمخصصون، و(to be تجنبها) تلك الضمنية.

التحويلات الصريحة

هذه هي الأكثر وضوحًا ويجب أن تكون الخيار الافتراضي لديك:

JS
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0     ← careful
Number('  10 '); // 10     (spaces are ignored)
Number('ciao'); // NaN    ← does not represent a number

String(42); // '42'
String(true); // 'true'
String(null); // 'null'
String(undefined); // 'undefined'

Boolean(1); // true
Boolean(0); // false
Boolean(''); // false
Boolean('abc'); // true

parseInt و parseFloat: المحللون المتسامحون

على عكس Number(...) وparseInt وparseFloat **تجاهل الأرقام غير الرقمية ذيل السلسلة: يتوقف عند أول حرف غير صالح.

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← must start with digits

toFixed لتنسيق الأرقام كسلاسل

تمت مشاهدته باختصار في الدرس السابق: التقريب إلى عدد عشري N وإرجاع a سلسلة.

JS
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'

لتحويله مرة أخرى إلى number استخدم البادئة Number(...) أو الأحادية محمي_INLINE_14:

JS
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14

NaN: القيمة التي تعض

يتم إنتاج NaN ("ليس رقمًا") عن طريق عمليات رقمية تفشل:

JS
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaN

صفات:

  • من النوع 'number' (نعم، "غير الرقم" هو رقم)
  • لا يساوي نفسه: NaN === NaN هو false
  • لاختباره استخدم الدالة Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

جربه

تمرين#js.m2.l4.e1
المحاولات: 0جارٍ التحميل…

بالنظر إلى السلسلة "128.95 EUR"، قم باستخراج الرقم (العشري) وتقريبه إلى أقرب عدد صحيح، وإعادته كرقم. المتوقع: 129.

جارٍ تحميل المحرر…
إظهار التلميح

يتجاهل parseFloat 'EUR'؛ .toFixed(0) يُقرب إلى عدد صحيح كسلسلة؛ الرقم (...) يحول مرة أخرى إلى رقم.

الحل متاح بعد 3 من المحاولات

تمرين المراجعة

تمرين#js.m2.l4.e2
المحاولات: 0جارٍ التحميل…

بالنظر إلى `n = Number('non un numero')`، اكتب تعبيرًا واحدًا يتم تقييمه على أنه صحيح إذا كانت النتيجة NaN.

جارٍ تحميل المحرر…
إظهار التلميح

استخدم Number.isNaN، وليس n === NaN: NaN لا يساوي نفسه.

الحل متاح بعد 3 من المحاولات