Lecții din modul (4/4)
Conversii de tip
Tot timpul trebuie să transformați tipul unei valori: value de
o intrare HTML ajunge sub formă de șir chiar dacă reprezintă un număr, un API
returnează șirurile la format, trebuie să înregistrați un obiect ca text. JS oferă
trei familii de conversii: parsere explicite, dedicate și (a fi
evitate) implicite.
Conversii explicite
Acestea sunt cele mai clare și ar trebui să fie implicite:
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 și parseFloat: analizatori toleranți
Spre deosebire de Number(...), parseInt și parseFloat ignorați caracterul non-numeric
coada șirului: se opresc la primul caracter nevalid.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← must start with digitstoFixed pentru a formata numerele ca șiruri
Văzut pe scurt în lecția anterioară: rotunjește la N zecimale și returnează a șir.
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'Pentru a-l converti înapoi într-un number, utilizați prefixul Number(...) sau unar
+:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: valoarea care mușcă
NaN ("Nu este un număr") este produs de operații numerice care eșuează:
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaNCaracteristici:
- are tipul
'number'(da, un „non-număr” este un număr) - nu este egal cu el însuși:
NaN === NaNestefalse - pentru a-l testa utilizați funcția
Number.isNaN(x)
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueÎncearcă
Având în vedere șirul „128,95 EUR”, extrageți numărul (zecimal) și rotunjiți-l la cel mai apropiat număr întreg, returnându-l ca număr. Așteptată: 129.
Afișează indiciu
parseFloat ignoră „EUR”; .toFixed(0) se rotunjește la un număr întreg ca șir; Number(...) se convertește înapoi într-un număr.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Având în vedere `n = Number('non un numero')`, scrieți o singură expresie care se evaluează la adevărat dacă rezultatul este NaN.
Afișează indiciu
Utilizați Number.isNaN, nu n === NaN: NaN nu este egal cu el însuși.
Soluție disponibilă după 3 încercări