JavaScript membiarkan Vs var (dengan Contoh)

Dalam tutorial ini, anda akan belajar tentang perbezaan antara let dan var dalam JavaScript dengan bantuan contoh.

Dalam JavaScript, kedua-dua kata kunci vardan letdigunakan untuk menyatakan pemboleh ubah.

Kata letkunci 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 letdan 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 vardapat 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 lethanya 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 ifpernyataan blok. b akan dilindungi blok dan hanya dapat diakses di dalam ifblok.

Oleh itu, semasa anda cuba mengakses b di luar ifblok, ralat berlaku (seperti yang ditunjukkan di atas dalam program).

Catatan : Pemboleh ubah yang dinyatakan di dalam fungsi akan berfungsi untuk kedua vardan let.

let tidak membenarkan untuk mendeklarasikan semula Pemboleh ubah

1. Pemboleh ubah yang diisytiharkan dengan varboleh dinyatakan semula. Sebagai contoh,

 var a = 5; // 5 var a = 3; // 3

Pemboleh ubah yang dinyatakan dengan lettidak 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 vardalam 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 letdalam 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 vardigunakan 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, forgelung menyatakan semula pemboleh ubah a. Oleh itu nilai adiubah 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 vardan letakan 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.

Artikel menarik...