Modulelessen (4/4)
Type conversies
De hele tijd moet u het type van een waarde transformeren: de value van
een HTML-invoer arriveert als een string, zelfs als deze een getal vertegenwoordigt, een API
retourneert tekenreeksen naar formaat, u moet een object als tekst loggen. JS aanbiedingen
drie families van conversies: expliciete, speciale parsers en (to be
vermeden) impliciete.
Expliciete conversies
Dit zijn de duidelijkste en zouden uw standaard moeten zijn:
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 en parseFloat: tolerante parsers
In tegenstelling tot Number(...), parseInt en parseFloat negeer de niet-numerieke
staart van de string: ze stoppen bij het eerste ongeldige teken.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← must start with digitstoFixed om getallen op te maken als tekenreeksen
Kort gezien in de vorige les: rondt af op N decimalen en retourneert a tekenreeks.
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'Om het terug te converteren naar een number gebruik je het voorvoegsel Number(...) of de unaire
+:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: de waarde die bijt
NaN ("Geen getal") wordt geproduceerd door numerieke bewerkingen die mislukken:
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaNKenmerken:
- het heeft het type
'number'(ja, een "niet-nummer" is een nummer) - het is niet gelijk aan zichzelf:
NaN === NaNisfalse - om het te testen gebruik je de functie
Number.isNaN(x)
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueProbeer het
Gegeven de string '128,95 EUR', extraheer het (decimale) getal en rond het af op het dichtstbijzijnde gehele getal, en retourneer het als een getal. Verwacht: 129.
Toon hint
parseFloat negeert 'EUR'; .toFixed(0) rondt af op een geheel getal als een tekenreeks; Getal(...) converteert terug naar een getal.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Gegeven `n = Number('non un numero')`, schrijft u een enkele expressie die resulteert in true als het resultaat NaN is.
Toon hint
Gebruik Number.isNaN, niet n === NaN: NaN is niet gelijk aan zichzelf.
Oplossing beschikbaar na 3 pogingen