Direct naar de hoofdinhoud
Module 2 · Les 4 van 48/32 in de cursus~8 min
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:

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 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.

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

toFixed om getallen op te maken als tekenreeksen

Kort gezien in de vorige les: rondt af op N decimalen en retourneert a tekenreeks.

JS
(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 +:

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

NaN: de waarde die bijt

NaN ("Geen getal") wordt geproduceerd door numerieke bewerkingen die mislukken:

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

Kenmerken:

  • het heeft het type 'number' (ja, een "niet-nummer" is een nummer)
  • het is niet gelijk aan zichzelf: NaN === NaN is false
  • om het te testen gebruik je de functie Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Probeer het

Oefening#js.m2.l4.e1
Pogingen: 0Laden…

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.

Editor laden…
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

Oefening#js.m2.l4.e2
Pogingen: 0Laden…

Gegeven `n = Number('non un numero')`, schrijft u een enkele expressie die resulteert in true als het resultaat NaN is.

Editor laden…
Toon hint

Gebruik Number.isNaN, niet n === NaN: NaN is niet gelijk aan zichzelf.

Oplossing beschikbaar na 3 pogingen