Lompati ke konten utama
Modul 2 · Pelajaran 4 dari 48/32 dalam kursus~8 min
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:

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

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

toFixed untuk memformat angka sebagai string

Terlihat secara singkat dalam pelajaran sebelumnya: membulatkan ke N desimal dan mengembalikan a tali.

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

Untuk mengubahnya kembali menjadi number gunakan awalan Number(...) atau unary +:

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

NaN: nilai yang menggigit

NaN ("Bukan Angka") dihasilkan oleh operasi numerik yang gagal:

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

Karakteristik:

  • bertipe 'number' (ya, "bukan angka" adalah angka)
  • tidak sama dengan dirinya sendiri: NaN === NaN adalah false
  • untuk mengujinya gunakan fungsi Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Cobalah

Latihan#js.m2.l4.e1
Upaya: 0Memuat…

Diberikan string '128,95 EUR', ekstrak angka (desimal) dan bulatkan ke bilangan bulat terdekat, kembalikan sebagai angka. Diharapkan: 129.

Memuat editor…
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

Latihan#js.m2.l4.e2
Upaya: 0Memuat…

Diberikan `n = Number('non un numero')`, tuliskan ekspresi tunggal yang bernilai true jika hasilnya adalah NaN.

Memuat editor…
Tunjukkan petunjuk

Gunakan Number.isNaN, bukan n === NaN: NaN tidak sama dengan dirinya sendiri.

Solusi tersedia setelah 3 upaya