Bingung Sama NaN? Gunakan isNaN() Buat Cek Validasi Angka
Pernah ngalamin error aneh di JavaScript karena angka yang nggak valid? Atau mungkin pernah nemu NaN
(Not-a-Number) tapi bingung cara ngeceknya? Nah, di sinilah isNaN()
jadi penyelamat!
NaN
di JavaScript sering muncul akibat operasi matematika yang gagal atau konversi string yang tidak valid ke angka. Dengan isNaN()
, kita bisa memeriksa apakah suatu nilai benar-benar bukan angka, sehingga bisa menghindari error dalam kode.
Yuk, kita bahas gimana cara pakai isNaN()
, bedanya dengan Number.isNaN()
, dan kapan sebaiknya digunakan!
Apa Itu NaN
?
NaN
adalah singkatan dari "Not-a-Number", yaitu nilai spesial di JavaScript yang menunjukkan bahwa suatu ekspresi seharusnya menghasilkan angka, tapi gagal.
Contoh NaN
dalam JavaScript
console.log(0 / 0); // NaN (karena 0 dibagi 0 tidak terdefinisi)
console.log(Math.sqrt(-1)); // NaN (akar kuadrat dari -1 tidak valid)
console.log(parseInt("hello")); // NaN (karena "hello" bukan angka)
Ketiga contoh di atas menghasilkan NaN
, karena hasil operasi matematikanya tidak masuk akal.
Cara Mengecek NaN
dengan isNaN()
JavaScript menyediakan fungsi isNaN()
untuk memeriksa apakah suatu nilai adalah NaN
atau bukan.
Sintaks Dasar
isNaN(nilai);
- Mengembalikan
true
jika nilai adalahNaN
. - Mengembalikan
false
jika nilai adalah angka valid.
Contoh Penggunaan isNaN()
1. Mengecek NaN
dari Operasi Matematika
console.log(isNaN(0 / 0)); // true (karena hasilnya NaN)
console.log(isNaN(100 / "abc")); // true (karena "abc" bukan angka)
console.log(isNaN(10 - "5")); // false (karena "5" dikonversi jadi angka)
console.log(isNaN(100)); // false (karena ini angka valid)
✅ isNaN()
bisa membantu kita tahu apakah suatu nilai adalah NaN
atau bukan.
2. Validasi Input Pengguna
Misalnya kita meminta pengguna memasukkan angka, tapi harus dicek dulu valid atau tidak.
function validasiInput(input) {
if (isNaN(input)) {
console.log("Input bukan angka yang valid!");
} else {
console.log("Input valid:", input);
}
}
validasiInput(50); // Input valid: 50
validasiInput("hello"); // Input bukan angka yang valid!
validasiInput(NaN); // Input bukan angka yang valid!
✅ Menghindari kesalahan input sebelum digunakan dalam perhitungan.
Masalah isNaN()
dan Solusi Number.isNaN()
Meski isNaN()
berguna, fungsi ini punya kelemahan karena mengonversi nilai ke angka sebelum memeriksa NaN
, yang bisa menyebabkan hasil yang tidak terduga.
Contoh Masalah isNaN()
console.log(isNaN("123")); // false (padahal ini string, bukan angka!)
console.log(isNaN("abc")); // true (karena tidak bisa dikonversi ke angka)
console.log(isNaN(true)); // false (karena `true` dianggap 1)
console.log(isNaN(" ")); // false (karena spasi dianggap angka 0)
❌ Masalah utama: isNaN()
mencoba mengubah string atau boolean ke angka sebelum mengecek NaN
, yang bisa bikin hasilnya membingungkan.
Solusi: Pakai Number.isNaN()
untuk Validasi Lebih Akurat
Kalau butuh validasi yang lebih ketat dan tanpa konversi tipe data, pakai Number.isNaN()
.
Perbedaan isNaN()
vs Number.isNaN()
console.log(isNaN("123")); // false (dikonversi ke angka)
console.log(Number.isNaN("123")); // false (tidak dikonversi, langsung dicek)
console.log(isNaN(NaN)); // true (betul, ini NaN)
console.log(Number.isNaN(NaN)); // true (betul, ini NaN)
console.log(isNaN("hello")); // true (karena gagal dikonversi)
console.log(Number.isNaN("hello"));// false (karena "hello" bukan tipe number)
✅ Number.isNaN()
hanya mengembalikan true
jika nilai benar-benar NaN
, tanpa konversi aneh-aneh.
Studi Kasus: Validasi Data dengan isNaN()
1. Menjaga Data Input Tetap Valid
Misalnya kita punya form yang menerima input angka, tapi harus dipastikan valid.
function hitungLuasPersegi(sisi) {
if (isNaN(sisi)) {
return "Error: Input bukan angka!";
}
return sisi * sisi;
}
console.log(hitungLuasPersegi(5)); // 25
console.log(hitungLuasPersegi("abc"));// Error: Input bukan angka!
✅ Mencegah perhitungan dengan nilai yang tidak valid.
2. Membersihkan Data dalam Array
Misalnya kita punya array campuran angka dan nilai tidak valid, dan kita ingin membuang semua NaN
.
let data = [100, "abc", NaN, 50, "xyz", 200];
let dataBersih = data.filter(num => !isNaN(num));
console.log(dataBersih);
Output:
[100, 50, 200]
✅ Hasilnya hanya angka valid, tanpa NaN
atau string aneh.
Kesimpulan
Metode | Keamanan | Kecepatan | Kapan Dipakai? |
---|---|---|---|
isNaN() |
❗ Berisiko Konversi | 🐌 Bisa Lambat | Untuk validasi dasar tapi perlu hati-hati |
Number.isNaN() |
✅ Aman | 🚀 Lebih Cepat | Untuk validasi angka tanpa konversi |
Kapan Sebaiknya Pakai isNaN()
?
- Kalau ingin validasi cepat untuk angka tapi bisa menerima tipe data lain.
- Kalau tidak masalah dengan konversi string ke angka.
Kapan Harus Pakai Number.isNaN()
?
- Kalau butuh validasi angka tanpa konversi.
- Kalau ingin memastikan nilai benar-benar
NaN
, bukan sekadar bukan angka.
Jadi, kalau kamu butuh cek apakah suatu nilai adalah NaN
, pakai isNaN()
atau lebih aman lagi Number.isNaN()
biar kode tetap rapi dan bebas error!