Przejdź do głównej treści
eLearner.app
Moduł 2 · Lekcja 4 z 48/32 w kursie~8 min
Lekcje modułu (4/4)

Konwersje typów

Ciągle musisz konwertować typ wartości: value z wejścia HTML przychodzi jako string, nawet jeśli reprezentuje liczbę, API zwraca stringi do sformatowania, musisz zalogować obiekt jako tekst. JS oferuje trzy rodziny konwersji: jawne, dedykowane parsery oraz (których należy unikać) niejawne.

Konwersje jawne

Są najbardziej czytelne i powinny być Twoim domyślnym wyborem:

JS
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0     ← attenzione
Number('  10 '); // 10     (spazi vengono ignorati)
Number('ciao'); // NaN    ← non rappresenta un numero

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

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

parseInt i parseFloat: tolerancyjne parsery

W przeciwieństwie do Number(...), parseInt i parseFloat ignorują nienumeryczną końcówkę stringa: zatrzymują się na pierwszym nieprawidłowym znaku.

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← deve iniziare con cifre

toFixed do formatowania liczb jako stringi

Widziane pokrótce w poprzedniej lekcji: zaokrągla do N miejsc po przecinku i zwraca string.

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

Aby przekonwertować go z powrotem na number, użyj prefiksu Number(...) lub unarnego +:

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

NaN: wartość, która gryzie

NaN ("Not a Number") powstaje w wyniku nieudanych operacji numerycznych:

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

Cechy:

  • jest typu 'number' (tak, "nie-liczba" jest liczbą)
  • nie jest równe samemu sobie: NaN === NaN to false
  • do jego przetestowania użyj funkcji Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Spróbuj sam

Ćwiczenie#js.m2.l4.e1
Próby: 0Ładowanie...

Mając string '128.95 EUR', wyodrębnij liczbę (dziesiętną) i zaokrąglij ją do pierwszego miejsca po przecinku, zwracając jako number. Oczekiwano: 129.

Ładowanie edytora...
Pokaż wskazówkę

parseFloat ignoruje 'EUR'; .toFixed(0) zaokrągla do liczby całkowitej jako string; Number(...) konwertuje z powrotem na number.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#js.m2.l4.e2
Próby: 0Ładowanie...

Mając `n = Number('non un numero')`, napisz jedno wyrażenie, które zwraca true, jeśli wynik to NaN.

Ładowanie edytora...
Pokaż wskazówkę

Użyj Number.isNaN, a nie n === NaN: NaN nie jest równe samemu sobie.

Rozwiązanie dostępne po 3 próbach