Variabel dan tipe data
7 tipe primitif + object, typeof, konversi otomatis.
Pahami konsepnya
JavaScript punya 7 tipe primitif: string, number (semua angka — bulat dan desimal — adalah number, tidak ada int/float terpisah), boolean, undefined (belum diisi), null (sengaja kosong), symbol (kunci unik), dan bigint (angka sangat besar, 123n). Selain primitif, semuanya adalah object — termasuk array, function, dan date.
typeof memeriksa tipe: typeof "halo" → "string", typeof 42 → "number", typeof undefined → "undefined", typeof null → "object" (bug historis yang tak akan diperbaiki). Untuk array: Array.isArray([1,2]) → true.
Konversi otomatis terjadi terus-menerus dan menjadi sumber bug: "5" + 3 menghasilkan "53" (string concat), "5" - 3 menghasilkan 2 (number subtract), "5" * 3 menghasilkan 15. Tanda + memihak string, tanda aritmetika lain memihak number. Konversi eksplisit lebih aman: Number("42"), String(42), Boolean(0) → false.
Coba contoh kode
let teks = "42";
let angka = Number(teks);
console.log(teks + "5"); // "425" — string concat
console.log(angka + 5); // 47 — number add
console.log(typeof null); // "object" (bug!)
console.log(Array.isArray([1])); // true
console.log(Boolean(0), Boolean("")); // false false
console.log(Boolean("0")); // true — string tidak kosong!Jebakan klasik: "5" + 3 merangkai menjadi "53" karena + memihak string bila salah satu operand string. Boolean("0") adalah true — string "0" tidak kosong, beda dari number 0 yang falsy.
Latihan singkat
Uji: konversi "42" ke number, tambah 8 — harus `50`.