Có ba từ khóa để khai báo một biến:
var
let
vàconst
chỉ có trong ES6
{
let foo;
}
// ReferenceError: foo is not defined
console.log(foo);
Mã mẫu ở trên hoạt động nếu chúng ta thay thế khai báo let
bằng var
khai báo.
2. let
không thể sử dụng một biến trước khi nó được khai báo . Mã mẫu bên dưới ném một ReferenceError
:
{
foo = 'hello';
let foo;
console.log(foo);
}
// ReferenceError: Cannot access 'foo' before initialization
Chúng ta sẽ thấy hello
trong Bảng điều khiển nếu chúng ta sử dụng var
trong mã mẫu ở trên.
3. Không thể khai báo lại các biến với let
.
// There is no problems if variables are re-declared with the same name
var foo, foo;
var bar;
var bar;
let baz;
let baz;
// Throw the following error
// SyntaxError: Identifier 'baz' has already been declared
4. Ở cấp cao nhất, các biến let
toàn cục không được gắn với window
đối tượng toàn cục.
let foo = 'hello';
window.foo; // undefined
var bar = 'world';
window.bar; // 'world'
5. Sử dụng let
có thể tránh được vấn đề với các đóng cửa var
có.
Để chứng minh vấn đề, giả sử rằng chúng ta có một danh sách các hàng. Trong mỗi hàng, chúng tôi có một nút để xóa mục liên kết trong hàng.
Chúng tôi lặp lại các mục và xử lý click
sự kiện của nút trong mỗi hàng:
for (var i = 0; i < 10; i++) {
document.getElementById(`button-\${i}`).addEventListener('click', function () {
// Remove the item
console.log(i);
});
}
6. Từ const
khóa hoạt động giống như let
, ngoại trừ biến không thể thay đổi.
// Throw the following error
// SyntaxError: Missing initializer in const declaration
const a;
Bạn cũng phải xác định một giá trị cho một hằng số.
const a = 'hello';
// Throw the following error
// TypeError: Assignment to constant variable
a = 'world';
Cần lưu ý rằng việc sử dụng const
không có nghĩa là biến là bất biến. Bạn có thể thay đổi các thuộc tính của một đối tượng:
const person = {};
person.age = 20;
Và thêm các mục khác vào một mảng:
const arr = [];
arr.push('foo');
arr[1] = 'bar';
console.log(arr); // ['foo', 'bar']
Chúc bạn luyện tập tốt
Không sử dụng var
trừ khi bạn phải hỗ trợ các trình duyệt cũ không hỗ trợ let
và const
từ khóa.
Tốt để biết
Mỗi ngôn ngữ lập trình sử dụng các từ khóa khác nhau để khai báo một biến và hằng số. Bảng sau liệt kê một số ví dụ: