Như chúng ta đã biết để khai báo một biến trong javascript chúng ta có 2 lựa chọn là khai báo bằng var hoặc khai báo bằng let. Bây giờ câu hỏi là khi nào thì sử dụng var và khi nào thì sử dụng let i. e sự khác biệt chính giữa cả hai là gì
Trong văn bản sau đây, chúng ta biết được sự khác biệt chính giữa var và let trong javascript
Sự khác biệt chính giữa let và var là phạm vi của một biến được xác định bằng let được giới hạn trong khối mà nó được khai báo trong khi biến được khai báo bằng var có phạm vi toàn cục. Vì vậy, chúng ta có thể nói rằng var đúng hơn là một từ khóa xác định một biến trên toàn cầu bất kể phạm vi khối
Phạm vi của let không chỉ giới hạn trong khối mà nó được xác định mà biến let cũng không được thêm vào với đối tượng cửa sổ toàn cục ngay cả khi nó được khai báo bên ngoài bất kỳ khối nào. Nhưng chúng ta có thể truy cập biến với var từ đối tượng cửa sổ nếu nó được định nghĩa trên toàn cầu
Do phạm vi giới hạn, biến let thường được sử dụng khi có giới hạn sử dụng các biến đó như trong vòng lặp for, vòng lặp while hoặc trong phạm vi của điều kiện if, v.v. trong khi biến var được sử dụng khi giá trị của biến ít cần thay đổi và được sử dụng để
Ngoài ra, một điểm khác biệt giữa var và let là biến với var có thể được khai báo lại thành một số giá trị khác trong khi biến không thể được khai báo lại nếu nó được xác định bằng let
Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về sự khác biệt giữa từ khóa
2 vàCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
3Code language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
#1. phạm vi biến
Các biến
2 thuộc về phạm vi toàn cầu khi bạn xác định chúng bên ngoài một hàm. Ví dụCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Code language: JavaScript [javascript]
var counter;
Trong ví dụ này,
5 là một biến toàn cục. Điều đó có nghĩa là biếnCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
5 có thể được truy cập bởi bất kỳ chức năng nàoCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Khi bạn khai báo một biến bên trong một hàm bằng cách sử dụng từ khóa
2, phạm vi của biến là cục bộ. Ví dụCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Code language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Trong ví dụ này, biến
5 là cục bộ của hàm
function increase[] { var counter = 10; } // cannot access the counter variable here
Code language: JavaScript [javascript]
9. Nó không thể truy cập được bên ngoài chức năngCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Ví dụ sau hiển thị bốn số từ 0 đến 4 bên trong vòng lặp và số 5 bên ngoài vòng lặp
Code language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
đầu ra
Code language: Shell Session [shell]
Inside the loop: 0 Inside the loop: 1 Inside the loop: 2 Inside the loop: 3 Inside the loop: 4 Outside the loop: 5
Trong ví dụ này, biến
0 là biến toàn cục. Do đó, nó có thể được truy cập từ cả bên trong và sau vòng lặpCode language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
1Code language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
Ví dụ sau sử dụng từ khóa
3 thay vì từ khóaCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
2Code language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Code language: JavaScript [javascript]
for [let i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
Trong trường hợp này, mã hiển thị bốn số từ 0 đến 4 bên trong một vòng lặp và lỗi tham chiếu
Inside the loop: 0 Inside the loop: 1 Inside the loop: 2 Inside the loop: 3 Inside the loop: 4
Lỗi
Code language: JavaScript [javascript]
Uncaught ReferenceError: i is not defined
Vì ví dụ này sử dụng từ khóa
3 nên biếnCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
0 bị chặn phạm vi. Điều đó có nghĩa là biến
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
Code language: JavaScript [javascript]
0 chỉ tồn tại và có thể truy cập được bên trong khối vòng lặpCode language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
7Code language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
Trong JavaScript, một khối được phân định bằng một cặp dấu ngoặc nhọn
8 giống như trong các câu lệnhCode language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
9 vàCode language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
7Code language: JavaScript [javascript]
for [var i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
Code language: JavaScript [javascript]
if[condition] { // inside a block } for[...] { // inside a block }
#2. Tạo thuộc tính toàn cầu
Các biến toàn cầu
2 được thêm vào đối tượng toàn cầu dưới dạng các thuộc tính. Đối tượng toàn cầu làCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
2 trên trình duyệt web vàCode language: Shell Session [shell]
Inside the loop: 0 Inside the loop: 1 Inside the loop: 2 Inside the loop: 3 Inside the loop: 4 Outside the loop: 5
3 trên Node. jsCode language: Shell Session [shell]
Inside the loop: 0 Inside the loop: 1 Inside the loop: 2 Inside the loop: 3 Inside the loop: 4 Outside the loop: 5
Code language: JavaScript [javascript]
var counter = 0; console.log[window.counter]; // 0
Tuy nhiên, các biến
3 không được thêm vào đối tượng toàn cầuCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Code language: JavaScript [javascript]
let counter = 0; console.log[window.counter]; // undefined
#3. khai báo lại
Từ khóa
2 cho phép bạn khai báo lại một biến mà không gặp vấn đề gìCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
0
function increase[] { var counter = 10; } // cannot access the counter variable here
Code language: JavaScript [javascript]
Tuy nhiên, nếu bạn khai báo lại một biến với từ khóa
3, bạn sẽ gặp lỗiCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
1Code language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
#4. Vùng chết tạm thời
Biến
3 có vùng chết tạm thời trong khi biếnCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
2 thì không. Để hiểu vùng chết tạm thời, hãy xem xét vòng đời của cả hai biếnCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
2 vàCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
3, có hai bước. sáng tạo và thực hiệnCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
Các biến var
- Trong giai đoạn tạo, công cụ JavaScript chỉ định không gian lưu trữ cho các biến
2 và ngay lập tức khởi tạo chúng thành
Code language: JavaScript [javascript]function increase[] { var counter = 10; } // cannot access the counter variable here
2
Code language: JavaScript [javascript]for [let i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
- Trong giai đoạn thực thi, công cụ JavaScript gán các biến
2 các giá trị được chỉ định bởi các phép gán nếu có. Mặt khác, các biến
Code language: JavaScript [javascript]function increase[] { var counter = 10; } // cannot access the counter variable here
2 vẫn chưa được xác định
Code language: JavaScript [javascript]function increase[] { var counter = 10; } // cannot access the counter variable here
Xem ngữ cảnh thực thi để biết thêm thông tin
Các biến let
- Trong giai đoạn tạo, công cụ JavaScript chỉ định không gian lưu trữ cho biến
3 nhưng không khởi tạo biến. Tham chiếu các biến chưa được khởi tạo sẽ gây ra lỗi
Code language: JavaScript [javascript]function increase[] { var counter = 10; } // cannot access the counter variable here
6
Code language: JavaScript [javascript]for [let i = 0; i < 5; i++] { console.log["Inside the loop:", i]; } console.log["Outside the loop:", i];
- Các biến
3 có giai đoạn thực hiện giống như các biến
Code language: JavaScript [javascript]function increase[] { var counter = 10; } // cannot access the counter variable here
2
Code language: JavaScript [javascript]function increase[] { var counter = 10; } // cannot access the counter variable here
Vùng chết tạm thời bắt đầu từ khối cho đến khi khai báo biến
3 được xử lý. Nói cách khác, đó là vị trí mà bạn không thể truy cập các biếnCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here
3 trước khi chúng được xác địnhCode language: JavaScript [javascript]
function increase[] { var counter = 10; } // cannot access the counter variable here