JavaScript 101: Jangan Bingung Lagi! Ini Perbedaan Var, Let, dan Const
Apa sih bedanya antara 'var', 'let', dan 'const' dalam JavaScript? Ini adalah pertanyaan yang sering ditanyakan oleh banyak orang yang berkecimpung di dunia IT khususnya pemrograman, mulai dari mahasiswa IT, junior developer, hingga programmer yang mencoba belajar menggunakan JavaScript untuk kebutuhan projectnya. Namun, jawabannya tidak selalu mudah ditemukan.
Dalam artikel ini, kami akan menjabarkan perbedaan antara ketiga keyword var, let, dan const pada JavaScript dan memberikan contoh kasus penggunaannya.
1. var
var adalah keyword yang digunakan untuk mendeklarasikan sebuah variable. Penggunaan var cukup fleksibel karena variable yang dideklarasikan dengan var dapat diubah nilainya kapan saja dan di mana saja dalam kode. Contohnya, kita dapat mendeklarasikan sebuah variable dengan var seperti ini:var nama = "John Doe";
console.log(nama); // output: "John Doe"
Namun, var memiliki masalah dalam hal scope dan hoisting. Scope var hanya terbatas pada function atau global scope, sehingga jika digunakan dalam nested function, variable yang sama dapat digunakan di dalam nested function tanpa menyebabkan konflik. Namun, hal ini dapat menyebabkan masalah pada saat debugging kode.
- Permasalahan dalam scope var adalah ketika kita menggunakannya dalam fungsi atau loop, variable yang dideklarasikan dengan var akan dapat diakses dari luar blok tersebut.
function cekScope() {
var nama = "John Doe";
if (true) {
var nama = "Jane Doe";
console.log(nama); // output: "Jane Doe"
}
console.log(nama); // output: "Jane Doe"
}
cekScope();
- Permasalahan dalam hoisting var adalah ketika kita menggunakannya sebelum pendeklarasian, variable akan dianggap dideklarasikan sejak awal program, meskipun nilainya tidak ditentukan sampai nanti.
console.log(nama); // output: undefined
var nama = "John Doe";
Karena permasalahan ini, var mulai jarang digunakan dalam pengembangan JavaScript saat ini dan digantikan oleh let dan const yang memiliki pengaturan scope dan hoisting yang lebih baik.
2. let
Let adalah keyword yang digunakan dalam JavaScript untuk mendeklarasikan sebuah variabel. Perbedaannya dengan "var" adalah let memiliki scope yang lebih sempit, yaitu hanya berlaku di dalam blok kode yang ditentukan. Contohnya, jika kita mendeklarasikan sebuah variabel dengan let di dalam if statement, maka variabel tersebut hanya akan berlaku dan dapat diakses di dalam if statement tersebut. Ini berbeda dengan var yang memiliki scope yang lebih luas, yaitu dapat diakses di dalam function atau global scope.Contoh penggunaan let:
if (true) {
let x = "Hello";
console.log(x); // Output: Hello
}
console.log(x); // ReferenceError: x is not defined
Dalam contoh di atas, variabel x dideklarasikan dengan keyword let di dalam if statement dan dapat diakses dan dicetak di dalam if statement tersebut. Namun, jika kita mencoba untuk mengakses x di luar if statement, akan terjadi error karena x tidak didefinisikan di luar blok kode tersebut.
Let juga tidak mengalami hoisting seperti var, sehingga kita tidak dapat mengakses variabel yang dideklarasikan dengan let sebelum dideklarasikan.
Contoh permasalahan scope dan hoisting dengan let:
console.log(x); // ReferenceError: x is not defined
let x = "Hello";
Dalam contoh diatas karena let tidak mengalami hoisting maka akan menghasilkan error karena variabel x tidak didefinisikan sebelum digunakan.
Secara umum, let lebih disarankan untuk digunakan daripada var karena memiliki scope yang lebih sempit dan tidak mengalami hoisting, sehingga lebih mudah diprediksi dan dikendalikan. Namun terkadang var masih digunakan karena keterbatasan pada beberapa engine javascript yang belum support let.
3. const
Const (konstanta) adalah keyword yang digunakan dalam JavaScript untuk mendeklarasikan variabel yang nilainya tidak dapat diubah. Ini berarti bahwa setelah mendeklarasikan variabel dengan const, kita tidak dapat mengubah nilainya lagi. Ini berbeda dengan var dan let yang memungkinkan kita untuk mengubah nilainya setelah deklarasi.Sama seperti var dan let, const juga memiliki scope yang sama, yaitu global dan local. Namun, perbedaannya adalah bahwa const harus diinisialisasi saat deklarasi, artinya kita harus memberikan nilai saat mendeklarasikan variabel dengan const. Jika tidak, maka akan terjadi error.
Contoh penggunaan const:
const PI = 3.14; // deklarasi konstanta PI dengan nilai 3.14
console.log(PI); // output: 3.14
PI = 3.15; // akan menyebabkan error karena tidak dapat mengubah nilai konstanta setelah deklarasi
Selain itu, const juga memiliki fitur "freeze" yang membuat objek atau array yang dideklarasikan dengan const tidak dapat diubah isinya. Namun, properti dari objek atau array tersebut masih dapat diubah.
const user = {name: "John", age: 30};
user.name = "Jane"; // valid, properti dari objek masih dapat diubah
user = {name: "Jane", age: 25}; // tidak valid, tidak dapat mengubah referensi objek setelah deklarasi
Secara umum, const lebih aman digunakan dibandingkan var dan let karena menjamin bahwa nilai dari variabel tidak akan diubah tanpa sepengetahuan kita. Namun, perlu diingat bahwa const hanya membekukan referensi dari objek atau array, bukan isinya.
Kesimpulannya, var, let, dan const adalah keyword yang digunakan dalam JavaScript untuk mendeklarasikan variable. Var digunakan sebagai keyword default untuk mendeklarasikan variable sebelum ES6, tetapi karena permasalahan scope dan hoisting yang terkait dengan var, ia mulai jarang digunakan. Let digunakan untuk mendeklarasikan variable dengan scope yang lebih terbatas dan tidak terpengaruh oleh hoisting. Const digunakan untuk mendeklarasikan variable yang nilainya tidak dapat diubah setelah dideklarasikan. Pemilihan keyword yang tepat untuk mendeklarasikan variable sangat penting untuk menjaga kode Anda tetap terorganisir dan mudah dimengerti.