Tipe data menentukan jenis nilai yang bisa disimpan dan dioperasikan dalam JavaScript. Memahami tipe data adalah fondasi dari semua pemrograman.
JavaScript memiliki 7 tipe data primitif — nilai paling dasar yang tidak dapat dipecah lagi:
1. Number — Angka
let umur = 25; // bilangan bulat
let harga = 99.99; // bilangan desimal
let suhu = -5; // bilangan negatif
let jarak = 1.5e6; // notasi ilmiah (= 1.500.000)
// Nilai Number khusus
console.log(10 / 0); // Infinity
console.log('abc' * 2); // NaN (Not a Number)
console.log(isNaN('abc')); // true
2. String — Teks
let nama = 'Budi'; // kutip tunggal
let kota = "Jakarta"; // kutip ganda
let pesan = `Halo, ${nama}!`; // template literal (backtick)
// Template literal — sangat berguna untuk string dinamis
let umur = 25;
console.log(`Nama: ${nama}, Umur: ${umur} tahun`);
// Output: "Nama: Budi, Umur: 25 tahun"
// Properti dan metode string
console.log(nama.length); // 4
console.log(nama.toUpperCase()); // "BUDI"
console.log(kota.includes('kar')); // true
console.log(' halo '.trim()); // "halo"
3. Boolean — Benar/Salah
let sedangHujan = true;
let sudahMakan = false;
let lebihBesar = 10 > 5; // true
let lebihKecil = 10 < 5; // false
if (sedangHujan) {
console.log('Bawa payung!');
}
4. undefined — Belum Didefinisikan
let nilai;
console.log(nilai); // undefined — variabel ada tapi belum diisi
function tanpaReturn() {
// tidak ada return
}
console.log(tanpaReturn()); // undefined
5. null — Kosong Sengaja
let pengguna = null; // sengaja dikosongkan
// Beda dengan undefined:
// - undefined: belum pernah diisi
// - null: sengaja dikosongkan / "tidak ada"
6. BigInt — Angka Sangat Besar
const bilanganBesar = 9007199254740991n; // tambahkan 'n' di akhir
const hasil = bilanganBesar + 1n;
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
7. Symbol — Nilai Unik
const id1 = Symbol('id');
const id2 = Symbol('id');
console.log(id1 === id2); // false — selalu unik meski deskripsinya sama
Objek adalah tipe data yang bisa menyimpan kumpulan data dan fungsi:
// Object — pasangan kunci-nilai
let orang = { nama: 'Budi', umur: 25 };
// Array — daftar berurutan
let buah = ['apel', 'mangga', 'jeruk'];
// Function — blok kode yang bisa dipanggil
function sapa(nama) {
return `Halo, ${nama}!`;
}
console.log(typeof 42); // "number"
console.log(typeof 'Budi'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" ← bug klasik JavaScript!
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
⚠️
typeof nullmengembalikan"object"— ini adalah bug bersejarah di JavaScript yang tidak bisa diperbaiki karena akan memecah banyak kode yang sudah ada.
JavaScript sering melakukan konversi otomatis (implicit), yang bisa mengejutkan:
// Konversi implisit (terjadi otomatis)
console.log('5' + 3); // "53" — number diubah ke string!
console.log('5' - 3); // 2 — string diubah ke number
console.log(true + 1); // 2 — true diubah ke 1
// Konversi eksplisit (dilakukan manual)
Number('42'); // 42
Number('abc'); // NaN
String(42); // "42"
Boolean(0); // false
Boolean(''); // false
Boolean('Budi'); // true
parseInt('42px'); // 42 — ambil bagian angkanya saja
parseFloat('3.14m'); // 3.14
Di JavaScript, setiap nilai bisa dievaluasi sebagai boolean:
// Nilai FALSY — dianggap false di kondisi boolean
// false, 0, '', "", ``, null, undefined, NaN
if (0) { } // tidak dieksekusi
if ('') { } // tidak dieksekusi
if (null) { } // tidak dieksekusi
if ('Budi') { console.log('truthy!'); } // dieksekusi
if (1) { console.log('truthy!'); } // dieksekusi
if ([]) { console.log('truthy!'); } // dieksekusi — array kosong truthy!
if ({}) { console.log('truthy!'); } // dieksekusi — objek kosong truthy!
💡 Tips: Selalu gunakan
===(strict equality) untuk perbandingan di JavaScript, bukan==(loose equality).===tidak melakukan konversi tipe, sehingga perbandingan lebih dapat diprediksi.'5' === 5menghasilkanfalse, sedangkan'5' == 5menghasilkantrue— yang sering membingungkan! 🎯
Kursus
JavaScript Dasar
Kategori
Tipe Data & Operator
Durasi Pelajaran
20 menit