JavaScript Let
Từ let
khóa đã được giới thiệu trong
ES6 (2015) .
Không thể khai báo lại các biến được xác định với let
.
Các biến được xác định với let
phải được Khai báo trước khi sử dụng.
Các biến được xác định với let
có Phạm vi khối.
Không thể khai báo lại
let
Không thể khai báo lại các biến được xác định với .
Bạn không thể vô tình khai báo lại một biến.
Với let
bạn không thể làm điều này:
Thí dụ
let x = "John Doe";
let x = 0;
// SyntaxError: 'x' has already been declared
Với var
bạn có thể:
Thí dụ
var x = "John Doe";
var x = 0;
Phạm vi khối
Trước ES6 (2015), JavaScript chỉ có Phạm vi toàn cầu và Phạm vi chức năng .
ES6 đã giới thiệu hai từ khóa JavaScript mới quan trọng: let
và const
.
Hai từ khóa này cung cấp Phạm vi khối trong JavaScript.
Các biến được khai báo bên trong khối {} không thể được truy cập từ bên ngoài khối:
Thí dụ
{
let x = 2;
}
// x can NOT be used here
Các biến được khai báo với var
từ khóa KHÔNG được có phạm vi khối.
Các biến được khai báo bên trong khối {} có thể được truy cập từ bên ngoài khối.
Thí dụ
{
var x = 2;
}
// x CAN be used here
Khai báo lại các biến
Khai báo lại một biến bằng cách sử dụng var
từ khóa có thể gây ra vấn đề.
Khai báo lại một biến bên trong một khối cũng sẽ khai báo lại biến bên ngoài khối:
Thí dụ
var x = 10;
// Here x is 10
{
var x = 2;
// Here x is 2
}
// Here x is 2
Khai báo lại một biến bằng cách sử dụng let
từ khóa có thể giải quyết vấn đề này.
Khai báo lại một biến bên trong một khối sẽ không khai báo lại biến bên ngoài khối:
Thí dụ
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10
Hỗ trợ trình duyệt
Từ let
khóa không được hỗ trợ đầy đủ trong Internet Explorer 11 hoặc phiên bản cũ hơn.
Bảng sau xác định các phiên bản trình duyệt đầu tiên có hỗ trợ đầy đủ cho let
từ khóa:
Chrome 49 | Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Khai báo lại
Khai báo lại một biến JavaScript với var
được cho phép ở bất kỳ đâu trong chương trình:
Thí dụ
var x = 2;
// Now x is 2
var x = 3;
// Now x is 3
Với let
, việc khai báo lại một biến trong cùng một khối KHÔNG được phép:
Thí dụ
var x = 2; // Allowed
let x = 3; // Not allowed
{
let x = 2; // Allowed
let x = 3 // Not allowed
}
{
let x = 2; // Allowed
var x = 3 // Not allowed
}
Khai báo lại một biến với let
, trong một khối khác, IS cho phép:
Thí dụ
let x = 2; // Allowed
{
let x = 3; // Allowed
}
{
let x = 4; // Allowed
}
Cho phép nâng
Các biến được xác định bằng var
được nâng lên trên cùng và có thể được khởi tạo bất kỳ lúc nào.
Ý nghĩa: Bạn có thể sử dụng biến trước khi nó được khai báo:
Thí dụ
Điều này là OK:
carName = "Volvo";
var carName;
Nếu bạn muốn tìm hiểu thêm về hoists, hãy nghiên cứu chương JavaScript Hoisting .
Các biến được xác định với let
cũng được đưa lên đầu khối, nhưng không được khởi tạo.
Ý nghĩa: Sử dụng một let
biến trước khi nó được khai báo sẽ dẫn đến
ReferenceError
:
Thí dụ
carName = "Saab";
let carName = "Volvo";