Phạm vi khối lệnh, let và const
Bài học 3 trên 9 trong khóa học Những phần khó trong JavaScript hiện đại (ES6+) của Coddy.
Phạm vi khối lệnh là gì? Trước đó, phạm vi của một biến là gì?
Phạm vi của một biến là vùng mà biến đó có thể được truy cập, tức là ta chỉ có thể dùng biến trong phạm vi của nó.
Trước ES6, người ta khai báo biến bằng từ khóa var. Các biến này chỉ có phạm vi toàn cục và phạm vi hàm (cục bộ).
Trong ES6, ta có thể khai báo biến bằng từ khóa let và const, các biến này có phạm vi khối lệnh.
Khối lệnh là một vùng nằm bên trong cặp dấu ngoặc nhọn mở và đóng, nơi ta có thể viết code JS, ví dụ: { // any code }.
{
let x = 2;
}
// Không thể dùng x ở đây
// vì không thể truy cập x bên ngoài khối lệnh (block) ở trênĐiều tương tự cũng áp dụng cho const, vì nó cũng có phạm vi khối lệnh.
Các biến được khai báo bằng
constphải được khởi tạo, và ta không thể thay đổi hoặc gán giá trị mới sau lần khởi tạo đầu tiên!
const pi = 3.14;
pi = 4.2 // Lỗi, không thể gán giá trị mới cho hằng số khai báo bằng const
Như đã đề cập trước đó, var không có phạm vi khối lệnh, mà có phạm vi toàn cục hoặc phạm vi hàm.
{
var x = 2;
}
// Có thể dùng x ở đây vì x có phạm vi toàn cục.
Một số điểm quan trọng:
- Không thể khai báo lại biến được khai báo bằng
let/const. - Phải khai báo biến được khai báo bằng
let/consttrước khi sử dụng. - Biến được khai báo bằng
let/constkhông thể được hoisted.
Thử thách
DễTạo hai biến (variable) bên trong hàm (function) đã cho: name = "Coddy" bằng let, age = 25 bằng const. In ra các giá trị này bằng console.log().
Tự làm thử
function getInfo() {
// Viết code ở đây
}Tất cả bài học trong Những phần khó trong JavaScript hiện đại (ES6+)
2Bắt đầu khám phá
Phạm vi khối lệnh, let và constHàm mũi tênSpread và restVòng lặp for...ofLớpPromiseBất đồng bộ và awaitTự luyện tập: Trình biên dịch JavaScript online