Chúng khác nhau ở ba điểm: scope, hành vi hoisting, và khả năng gán lại.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Chúng khác nhau ở ba điểm: scope, hành vi hoisting, và khả năng gán lại.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var là function-scoped, được hoist và khởi tạo thành undefined, và có thể khai báo lại. Điều này gây ra những rò rỉ bất ngờ — hãy tránh dùng nó.let là block-scoped ({ }), có thể gán lại, và nằm trong temporal dead zone cho đến dòng khai báo của nó (truy cập sớm sẽ ném lỗi).const là block-scoped và không thể gán lại — nhưng lưu ý rằng binding mới là hằng số, chứ không phải giá trị:const user = { name: "Ann" };
user.name = "Bob"; // ✅ được phép — thay đổi object, không phải gán lại
user = {}; // ❌ TypeError — không thể gán lại `user`
Mặc định dùng const; chuyển sang let chỉ khi bạn buộc phải gán lại; không bao giờ dùng var trong code mới. Điều này làm rõ ý định ("giá trị này sẽ không thay đổi") và tránh được những rò rỉ scope cùng sự nhầm lẫn về hoisting mà var mang lại.
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộ