دروس الوحدة (4/4)
نوع التحويلات
تحتاج طوال الوقت إلى تحويل نوع القيمة: value من
يصل إدخال HTML كسلسلة حتى لو كان يمثل رقمًا، أو واجهة برمجة التطبيقات (API).
بإرجاع السلاسل إلى التنسيق، فأنت بحاجة إلى تسجيل كائن كنص. عروض شبيبة
ثلاث عائلات من التحويلات: المحللون الصريحون والمخصصون، و(to be
تجنبها) تلك الضمنية.
التحويلات الصريحة
هذه هي الأكثر وضوحًا ويجب أن تكون الخيار الافتراضي لديك:
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'); // trueparseInt و parseFloat: المحللون المتسامحون
على عكس Number(...) وparseInt وparseFloat **تجاهل الأرقام غير الرقمية
ذيل السلسلة: يتوقف عند أول حرف غير صالح.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← must start with digitstoFixed لتنسيق الأرقام كسلاسل
تمت مشاهدته باختصار في الدرس السابق: التقريب إلى عدد عشري N وإرجاع a سلسلة.
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'لتحويله مرة أخرى إلى number استخدم البادئة Number(...) أو الأحادية
محمي_INLINE_14:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: القيمة التي تعض
يتم إنتاج NaN ("ليس رقمًا") عن طريق عمليات رقمية تفشل:
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaNصفات:
- من النوع
'number'(نعم، "غير الرقم" هو رقم) - لا يساوي نفسه:
NaN === NaNهوfalse - لاختباره استخدم الدالة
Number.isNaN(x)
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueجربه
بالنظر إلى السلسلة "128.95 EUR"، قم باستخراج الرقم (العشري) وتقريبه إلى أقرب عدد صحيح، وإعادته كرقم. المتوقع: 129.
إظهار التلميح
يتجاهل parseFloat 'EUR'؛ .toFixed(0) يُقرب إلى عدد صحيح كسلسلة؛ الرقم (...) يحول مرة أخرى إلى رقم.
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
بالنظر إلى `n = Number('non un numero')`، اكتب تعبيرًا واحدًا يتم تقييمه على أنه صحيح إذا كانت النتيجة NaN.
إظهار التلميح
استخدم Number.isNaN، وليس n === NaN: NaN لا يساوي نفسه.
الحل متاح بعد 3 من المحاولات