Konversi Tipe Data di JavaScript

Dalam JavaScript, tipe data bersifat dinamis dan lemah (loosely typed). Artinya, sebuah variabel bisa menyimpan tipe data berbeda sepanjang program berjalan, dan JavaScript sering kali otomatis mengonversi satu tipe data ke tipe lain sesuai kebutuhan. Proses ini disebut konversi tipe data (type conversion).
Konversi tipe data terbagi menjadi dua kategori utama: konversi implisit (coercion) dan konversi eksplisit (casting). Mari kita bahas keduanya.
1. Konversi Implisit (Type Coercion)
Konversi implisit terjadi otomatis ketika JavaScript mencoba menyesuaikan tipe data agar sesuai dengan konteks operasi.
Contoh penjumlahan dengan string:
console.log("5" + 2); // "52" (angka diubah jadi string)
console.log("5" - 2); // 3 (string diubah jadi number)
console.log("10" * "2"); // 20 (keduanya jadi number)
Pada contoh di atas:
- Operator
+
dengan string akan menggabungkan (concatenate). - Operator
-
dan*
akan memaksa string menjadi angka.
Contoh perbandingan longgar (==
)
console.log(5 == "5"); // true
console.log(0 == false); // true
==
melakukan coercion, sehingga hasilnya bisa membingungkan. Untuk hasil lebih konsisten, gunakan ===
(strict equality) agar tidak ada konversi otomatis.
2. Konversi Eksplisit (Type Casting)
Konversi eksplisit dilakukan dengan fungsi bawaan JavaScript.
a. Ke Number
Number(value)
parseInt(value)
untuk bilangan bulat.parseFloat(value)
untuk bilangan desimal.
console.log(Number("42")); // 42
console.log(parseInt("42px")); // 42
console.log(parseFloat("3.14")); // 3.14
Jika gagal, hasilnya NaN
(Not a Number).
b. Ke String
String(value)
value.toString()
console.log(String(123)); // "123"
console.log((true).toString()); // "true"
c. Ke Boolean
Boolean(value)
- Atau gunakan konversi ganda:
!!value
console.log(Boolean(1)); // true
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean("JS")); // true
Nilai yang dianggap falsy: 0
, NaN
, null
, undefined
, ""
(string kosong), dan false
itu sendiri.
3. Contoh Praktis
Validasi input pengguna
const ageInput = "25";
const age = Number(ageInput);
if (!isNaN(age)) {
console.log("Umur valid:", age);
} else {
console.log("Input tidak valid");
}
Boolean untuk kondisi
const username = "";
if (username) {
console.log("Ada username");
} else {
console.log("Username kosong");
}
Kesimpulan
Konversi tipe data di JavaScript bisa terjadi secara implisit maupun eksplisit.
- Konversi implisit (coercion) sering menimbulkan hasil mengejutkan, terutama dengan operator
+
dan==
. - Konversi eksplisit memberikan kontrol lebih besar, sehingga disarankan untuk digunakan ketika mengubah tipe data secara sengaja.
Dengan memahami cara kerja konversi ini, kita dapat menulis kode JavaScript yang lebih aman, mudah dipahami, dan bebas dari bug yang sulit dilacak.