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:
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'); // trueparseInt 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.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← deve iniziare con cifretoFixed do formatowania liczb jako stringi
Widziane pokrótce w poprzedniej lekcji: zaokrągla do N miejsc po przecinku i zwraca string.
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'Aby przekonwertować go z powrotem na number, użyj prefiksu Number(...) lub unarnego +:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: wartość, która gryzie
NaN ("Not a Number") powstaje w wyniku nieudanych operacji numerycznych:
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaNCechy:
- jest typu
'number'(tak, "nie-liczba" jest liczbą) - nie jest równe samemu sobie:
NaN === NaNtofalse - do jego przetestowania użyj funkcji
Number.isNaN(x)
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueSpróbuj sam
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.
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
Mając `n = Number('non un numero')`, napisz jedno wyrażenie, które zwraca true, jeśli wynik to NaN.
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