JavaScript let Vs var (với Ví dụ)

Trong hướng dẫn này, bạn sẽ tìm hiểu về sự khác biệt giữa let và var trong JavaScript với sự trợ giúp của các ví dụ.

Trong JavaScript, cả từ khóa varletđược sử dụng để khai báo các biến.

Các lettừ khóa được giới thiệu trong phiên bản sau này của JavaScript được gọi là ES6 (ES2015) . Và đó là cách ưu tiên để khai báo các biến.

JavaScript let Vs var

Dưới đây là tổng quan về sự khác biệt giữa letvar.

để cho var
hãy để là phạm vi khối. var là phạm vi chức năng.
let không cho phép khai báo lại các biến. var cho phép khai báo lại các biến.
Không xảy ra cẩu thả. Hoists xảy ra trong var.

JavaScript let Vs var trong Local Scope

var là phạm vi chức năng

Biến được khai báo bên trong một hàm có varthể được sử dụng ở bất kỳ đâu trong một hàm. Ví dụ,

 // 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

Trong chương trình trên, biến a được khai báo với var. Biến a có thể được sử dụng ở bất kỳ đâu bên trong hàm greet.

hãy để là phạm vi khối

Biến được khai báo với letchỉ có thể được truy cập bên trong một khối mã. Ví dụ,

 // 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();

Đầu ra

 hello world Uncaught ReferenceError: b không được định nghĩa

Trong chương trình trên, biến a được khai báo bên trong hàm và nó có thể được truy cập ở bất kỳ đâu bên trong hàm (a trở thành phạm vi hàm).

Tuy nhiên, biến b được khai báo bên trong ifcâu lệnh khối. b sẽ là phạm vi khối và chỉ có thể được truy cập bên trong ifkhối.

Do đó, khi bạn cố gắng truy cập b bên ngoài ifkhối, một lỗi xảy ra (như được hiển thị ở trên trong chương trình).

Lưu ý : Các biến được khai báo bên trong một hàm sẽ nằm trong phạm vi hàm cho cả varlet.

let không cho phép khai báo lại các biến

1. Một biến được khai báo với varcó thể được khai báo lại. Ví dụ,

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

Một biến được khai báo với letkhông thể được khai báo lại trong cùng một khối hoặc cùng một phạm vi. Ví dụ,

 let a = 5; let a = 3; // error 

Đầu ra

 Lỗi cú pháp chưa được khai báo: Số nhận dạng 'a' đã được khai báo

2. Khai báo lại một biến vartrong một phạm vi hoặc khối khác cũng sẽ thay đổi giá trị của biến bên ngoài. Ví dụ,

 var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3

Khai báo lại một biến lettrong một phạm vi hoặc khối khác sẽ coi biến đó như một biến khác. Và giá trị của một biến bên ngoài không thay đổi. Ví dụ,

 let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5

3. Khi một biến được khai báo với varđược sử dụng trong một vòng lặp, giá trị của biến đó sẽ thay đổi. Ví dụ,

 var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3

Trong chương trình trên, forvòng lặp khai báo lại biến a. Do đó giá trị của ađược thay đổi thành 3 ở cuối.

Khi một biến được khai báo với let được sử dụng trong một vòng lặp, giá trị của một biến không thay đổi. Ví dụ,

 let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2

Trong chương trình trên, forvòng lặp coi biến a là một biến khác với biến được khai báo ở trên. Và phạm vi của biến đó chỉ là bên trong forvòng lặp. Do đó giá trị của biến a vẫn là 2 ở cuối.

let Không cho phép nâng

Các biến được khai báo với varđược đưa lên đầu phạm vi của chương trình. Ví dụ,

 console.log(a); var a; // undefined (not an error)

Từ khóa letkhông cho phép cẩu. Ví dụ,

 console.log(a); let a; // Uncaught ReferenceError: a is not defined

Nếu bạn muốn tìm hiểu thêm về lưu trữ, hãy truy cập JavaScript Hoisting.

let và var Hỗ trợ trình duyệt

Hầu hết các trình duyệt hiện đại đều hỗ trợ việc sử dụng let. Tuy nhiên, một số trình duyệt không hỗ trợ đầy đủ let.

Để tìm hiểu thêm, hãy truy cập JavaScript để hỗ trợ trình duyệt.

Lưu ý : Trong trường hợp phạm vi toàn cầu, cả hai varletsẽ hoạt động theo cùng một cách. Ví dụ,

 var a = 5; // 5

Biến a sẽ có phạm vi toàn cục và có thể được truy cập ở bất kỳ đâu trong chương trình.

 let a = 5; // 5

Biến a sẽ có phạm vi toàn cục và có thể được truy cập ở bất kỳ đâu trong chương trình.

thú vị bài viết...