Pelajaran modul (4/4)
Ketik konversi
Sepanjang waktu Anda perlu mengubah tipe suatu nilai: value dari
input HTML datang sebagai string meskipun itu mewakili angka, API
mengembalikan string ke format, Anda perlu mencatat objek sebagai teks. penawaran JS
tiga kelompok konversi: parser eksplisit dan berdedikasi, dan (to be
dihindari) yang implisit.
Konversi eksplisit
Ini adalah yang paling jelas dan harus menjadi default Anda:
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 dan parseFloat: parser yang toleran
Berbeda dengan Number(...), parseInt dan parseFloat abaikan yang non-numerik
tail dari string: berhenti pada karakter pertama yang tidak valid.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← must start with digitstoFixed untuk memformat angka sebagai string
Terlihat secara singkat dalam pelajaran sebelumnya: membulatkan ke N desimal dan mengembalikan a tali.
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'Untuk mengubahnya kembali menjadi number gunakan awalan Number(...) atau unary
+:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: nilai yang menggigit
NaN ("Bukan Angka") dihasilkan oleh operasi numerik yang gagal:
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaNKarakteristik:
- bertipe
'number'(ya, "bukan angka" adalah angka) - tidak sama dengan dirinya sendiri:
NaN === NaNadalahfalse - untuk mengujinya gunakan fungsi
Number.isNaN(x)
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueCobalah
Diberikan string '128,95 EUR', ekstrak angka (desimal) dan bulatkan ke bilangan bulat terdekat, kembalikan sebagai angka. Diharapkan: 129.
Tunjukkan petunjuk
parseFloat mengabaikan 'EUR'; .toFixed(0) dibulatkan menjadi bilangan bulat sebagai string; Number(...) mengkonversi kembali ke nomor.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Diberikan `n = Number('non un numero')`, tuliskan ekspresi tunggal yang bernilai true jika hasilnya adalah NaN.
Tunjukkan petunjuk
Gunakan Number.isNaN, bukan n === NaN: NaN tidak sama dengan dirinya sendiri.
Solusi tersedia setelah 3 upaya