Dalam tutorial ini, anda akan belajar tentang perbezaan antara let dan var dalam JavaScript dengan bantuan contoh.
Dalam JavaScript, kedua-dua kata kunci var
dan let
digunakan untuk menyatakan pemboleh ubah.
Kata let
kunci diperkenalkan pada versi JavaScript yang lebih baru yang dikenali sebagai ES6 (ES2015) . Dan ini adalah kaedah pilihan untuk menyatakan pemboleh ubah.
JavaScript membiarkan Vs var
Inilah gambaran keseluruhan perbezaan antara let
dan var
.
biarkan | var |
---|---|
let is scoped. | var adalah fungsi skop. |
let tidak membenarkan untuk mendeklarasikan semula pemboleh ubah. | var memungkinkan untuk mendeklarasikan semula pemboleh ubah. |
Pengangkatan tidak berlaku dalam keadaan let. | Pengangkatan berlaku pada var. |
JavaScript membiarkan Vs var dalam Skop Tempatan
var adalah fungsi skop
Pemboleh ubah yang dinyatakan di dalam fungsi dengan var
dapat digunakan di mana saja dalam fungsi. Sebagai contoh,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
Dalam program di atas, pemboleh ubah a dinyatakan dengan var
. Pemboleh ubah a boleh digunakan di mana sahaja di dalam fungsi greet
.
let is scoped
Pemboleh ubah yang dinyatakan let
hanya dapat diakses di dalam blok kod. Sebagai contoh,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Pengeluaran
hello world Uncaught ReferenceError: b tidak ditentukan
Dalam program di atas, variabel a dinyatakan di dalam fungsi dan dapat diakses di mana saja di dalam fungsi (a menjadi fungsi lingkup).
Namun pemboleh ubah b dinyatakan di dalam if
pernyataan blok. b akan dilindungi blok dan hanya dapat diakses di dalam if
blok.
Oleh itu, semasa anda cuba mengakses b di luar if
blok, ralat berlaku (seperti yang ditunjukkan di atas dalam program).
Catatan : Pemboleh ubah yang dinyatakan di dalam fungsi akan berfungsi untuk kedua var
dan let
.
let tidak membenarkan untuk mendeklarasikan semula Pemboleh ubah
1. Pemboleh ubah yang diisytiharkan dengan var
boleh dinyatakan semula. Sebagai contoh,
var a = 5; // 5 var a = 3; // 3
Pemboleh ubah yang dinyatakan dengan let
tidak dapat dideklarasikan semula dalam blok yang sama atau ruang lingkup yang sama. Sebagai contoh,
let a = 5; let a = 3; // error
Pengeluaran
SyntaxError Uncaught: Pengecam 'a' telah diisytiharkan
2. Menyatakan semula pemboleh ubah dengan var
dalam ruang lingkup atau blok yang berbeza mengubah nilai pemboleh ubah luar juga. Sebagai contoh,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Menyatakan semula pemboleh ubah dengan let
dalam skop yang berbeza atau blok memperlakukan pemboleh ubah tersebut sebagai pemboleh ubah yang berbeza. Dan nilai pemboleh ubah di luar tidak berubah. Sebagai contoh,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Apabila pemboleh ubah dinyatakan dengan var
digunakan dalam satu gelung, nilai pemboleh ubah tersebut berubah. Sebagai contoh,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
Dalam program di atas, for
gelung menyatakan semula pemboleh ubah a. Oleh itu nilai a
diubah menjadi 3 pada akhir.
Apabila pemboleh ubah yang dinyatakan dengan let digunakan dalam satu gelung, nilai pemboleh ubah tidak berubah. Sebagai contoh,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
In the above program, for
loop treats variable a as a different variable than the one declared above. And the scope of that variable is only inside the for
loop. Hence the value of variable a remains 2 at the end.
let Doesn't Allow Hoisting
The variables declared with var
are hoisted to the top of the scope of the program. For example,
console.log(a); var a; // undefined (not an error)
The keyword let
does not allow hoisting. For example,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
If you want to learn more about hoisting, visit JavaScript Hoisting.
let and var Browser Support
Most of the modern browsers support the use of let
. However, some browsers do not fully support let
.
To learn more, visit JavaScript let browser support.
Catatan : Sekiranya terdapat skop global, keduanya var
dan let
akan berkelakuan dengan cara yang sama. Sebagai contoh,
var a = 5; // 5
Pemboleh ubah a akan dilingkupi global dan dapat diakses di mana saja dalam program.
let a = 5; // 5
Pemboleh ubah a akan dilingkupi global dan dapat diakses di mana saja dalam program.