Biến được tạo mà không có từ khoá khai báo (var, let, const) luôn là biến toàn cục, kể cả khi được tạo trong hàm
Khác với var¶
Các biến được khai báo với var có phạm vi function scope, còn với let, const thì nó phạm vi block scope
-
function scope: Biến được khai báo dùng được trong toàn bộ function
block scope: Biến được khai báo chỉ sử dụng được trong block {} nơi mà nó được khai báo
function usingLet() {
let x = 1;
if (true) {
let y = 2;
console.log(x); // 1
}
console.log(y); // Error: y is not defined
}
Hoặc đối với biến trong vòng for:
let vs const¶
-
let: biến đã khai báo có thể được gán lại
const: biến đã khai báo không thể được gán lại
const constVar = 'Only god can change me';
if (true) {
constVar = 'Don\'t try to change me'; // Error: invalid assignment
}
Tuy nhiên nếu const là object thì giá trị của object vẫn có thể bị thay đổi. Chỉ không thể bị gán thành object khác mà thôi.