Tipe Data JavaScript

Tipe Data JavaScript 🗃️

Tipe data menentukan jenis nilai yang bisa disimpan dan dioperasikan dalam JavaScript. Memahami tipe data adalah fondasi dari semua pemrograman.


7 Tipe Data Primitif

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

Tipe Data Non-Primitif: Object

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}!`;
}

Mengecek Tipe Data dengan typeof

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 null mengembalikan "object" — ini adalah bug bersejarah di JavaScript yang tidak bisa diperbaiki karena akan memecah banyak kode yang sudah ada.


Konversi Tipe Data

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

Nilai Falsy dan Truthy

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' === 5 menghasilkan false, sedangkan '5' == 5 menghasilkan true — yang sering membingungkan! 🎯

Selanjutnya

Informasi Kursus

Kursus

JavaScript Dasar

Kategori

Tipe Data & Operator

Durasi Pelajaran

20 menit

Pelajaran dalam Kategori Ini