Dalam JavaScript, kita menggunakan variabel untuk menyimpan nilai. Ada tiga cara mendeklarasikan variabel:
✅ var
✅ let
✅ const
Walaupun ketiganya digunakan untuk hal yang sama (menyimpan data), cara kerja dan sifatnya berbeda. Perbedaan ini sangat penting karena bisa menyebabkan error kalau kita tidak paham.
Apa Itu var, let, dan const?
| Kata Kunci | Kapan Digunakan | Umumnya Digunakan Untuk |
|---|---|---|
var | Cara lama (sebelum tahun 2015) | Kode jadul atau kompatibilitas |
let | Variabel yang bisa berubah | Data dinamis |
const | Nilai yang tidak boleh berubah | Konstanta / data tetap |
1. var – Cara Lama, Banyak Risiko
Ciri-Ciri var:
✅ Bisa diubah nilainya (reassign)
✅ Bisa dideklarasikan ulang (redeclare)
Scope-nya function, bukan block
Mendukung hoisting, tapi nilainya jadi undefined
Contoh:
var nama = "Idos";
var nama = "Dodds"; // Boleh, tidak error
console.log(nama); // Output: Dodds
Contoh hoisting:
console.log(umur); // Output: undefined (bukan error!)
var umur = 25;
Kenapa bisa? Karena
var"naik ke atas" secara otomatis oleh JavaScript (disebut hoisting).
2. let – Modern, Aman, dan Fleksibel
Ciri-Ciri let:
✅ Bisa diubah nilainya
❌ Tidak bisa dideklarasi ulang di blok yang sama
Scope-nya adalah block {} (lebih aman dari var)
⚠️ Kena hoisting juga, tapi kalau diakses sebelum dideklarasikan = Error
Contoh:
let kota = "Jakarta";
kota = "Bandung"; // Boleh, nilainya berubah
console.log(kota); // Output: Bandung
let kota = "Surabaya"; // ❌ Error! Tidak bisa dideklarasi ulang
Contoh Scope:
let x = 10;
if (true) {
let x = 5;
console.log(x); // Output: 5 (x lokal dalam blok)
}
console.log(x); // Output: 10 (x global luar blok)
Contoh Hoisting (Error):
console.log(angka); // ❌ Error: Cannot access 'angka' before initialization
let angka = 100;
3. const – Tetap, Tidak Bisa Diubah
Ciri-Ciri const:
❌ Tidak bisa diubah nilainya setelah dibuat
❌ Tidak bisa dideklarasi ulang
Scope-nya block seperti let
⚠️ Kena hoisting juga, tapi langsung error jika diakses sebelum dideklarasi
Contoh:
const pi = 3.14;
pi = 3.14159; // ❌ Error: Tidak bisa diubah
const pi = 3.15; // ❌ Error: Tidak bisa dideklarasi ulang
Tapi Hati-Hati: Objek/array bisa dimodifikasi!
const user = { nama: "Idos" };
user.nama = "Dodds"; // ✅ Boleh! Karena objeknya tidak diganti, hanya isinya
user = { nama: "Ali" }; // ❌ Error: Tidak boleh ganti objeknya
Tabel Ringkasan Perbedaan
| Fitur | var | let | const |
|---|---|---|---|
| Bisa diubah nilainya | Ya | Ya | Tidak |
| Bisa dideklarasi ulang | Ya | Tidak | Tidak |
| Jenis Scope | Function (function) | Block ({}) | Block ({}) |
| Hoisting | Ya (nilai undefined) | Ya (tapi error saat akses) | Ya (tapi error saat akses) |
| Waktu dikenalkan | Versi awal JS | ES6 (2015) | ES6 (2015) |
Kapan Harus Pakai let dan const?
Rekomendasi dari developer JavaScript modern:
- Gunakan
**const**sebanyak mungkin. Lebih aman karena tidak bisa diubah. - Gunakan
**let**jika memang butuh mengganti nilai. - Hindari
varkecuali untuk kode lama (legacy code).
Contoh Lengkap:
// Ini boleh:
const API_KEY = "123ABC";
// Ini juga boleh:
let score = 0;
score = score + 10;
// Ini harus dihindari:
var total = 100;
var total = 200; // Gampang bikin error dan konflik
Kesimpulan
-
var= gaya lama, banyak jebakan -
let= aman untuk variabel yang bisa berubah -
const= pilihan terbaik untuk nilai yang tetap
Gunakan let dan const di semua proyek JavaScript modern.var sudah tidak direkomendasikan lagi.