Hoisting trong JavaScript
- Trang trước Phạm vi JS
- Trang tiếp theo Chế độ严格 JS
Nâng lên (Hoisting) là hành vi mặc định của JavaScript khi di chuyển các khai báo lên trên.
Khai báo của JavaScript sẽ được nâng lên
Trong JavaScript, bạn có thể khai báo biến sau khi sử dụng nó.
Nói cách khác, bạn có thể sử dụng nó trước khi khai báo biến.
Ví dụ 1 vớiVí dụ 2 kết quả là như nhau:
Ví dụ 1
x = 5; // Gán giá trị 5 cho x elem = document.getElementById("demo"); // Tìm kiếm phần tử elem.innerHTML = x; // Hiển thị x trong phần tử var x; // Khai báo x
Ví dụ 2
var x; // Khai báo x x = 5; // Gán giá trị 5 cho x elem = document.getElementById("demo"); // Tìm kiếm phần tử elem.innerHTML = x; // Hiển thị x trong phần tử
Để hiểu điều này, bạn phải hiểu thuật ngữ "hoisting".
Hoisting là hành vi mặc định của JavaScript khi nâng tất cả các khai báo lên đầu của khu vực hoạt động hiện tại (nâng lên đầu của tập lệnh hoặc hàm hiện tại).
ký tự khóa let và const
sử dụng let
hoặc const
Các biến được khai báo và các hằng số sẽ không được nâng lên!
Vui lòng JS Let / Const Để đọc thêm về let và const, hãy xem tại đây.
Khởi tạo của JavaScript sẽ không được nâng lên
JavaScript chỉ nâng lên các khai báo, không phải là khởi tạo.
Ví dụ 1 vớiVí dụ 2 kết quả không giống nhau:
Ví dụ 1
var x = 5; // Khởi tạo x var y = 7; // Khởi tạo y elem = document.getElementById("demo"); // Tìm kiếm phần tử elem.innerHTML = x + " " + y; // Hiển thị x và y
Ví dụ 2
var x = 5; // Khởi tạo x elem = document.getElementById("demo"); // Tìm kiếm phần tử elem.innerHTML = x + " " + y; // Hiển thị x và y var y = 7; // Khởi tạo y
Vậy trong ví dụ cuối cùng, y vẫn là giá trị không xác định có hợp lý không?
Đây là vì chỉ có khai báo (var y) mà không phải là khởi tạo (=7) mới được nâng lên trên cùng.
Do hoisting, y đã được khai báo trước khi sử dụng, nhưng do chưa nâng cao giá trị khởi tạo, giá trị của y vẫn là chưa định nghĩa.
Ví dụ 2 cũng vậy:
Ví dụ
var x = 5; // Khởi tạo x var y; // Khai báo y elem = document.getElementById("demo"); // Tìm kiếm phần tử elem.innerHTML = x + " " + y; // Hiển thị x và y y = 7; // Gán giá trị 7 cho y
Khai báo biến của bạn ở trên!
Hoisting (đối với nhiều nhà phát triển) là một hành vi không được biết đến hoặc bị bỏ qua của JavaScript.
Nếu nhà phát triển không hiểu hoisting, chương trình có thể chứa lỗi (lỗi).
Để tránh lỗi, hãy luôn khai báo tất cả các biến ở đầu mỗi phạm vi.
Do đây là cách mà JavaScript giải thích mã, vì vậy hãy duy trì thói quen tốt này.
Chế độ严格 của JavaScript không cho phép sử dụng biến mà không được khai báo.
Hãy học tiếp ở chương tiếp theouse strict”。
- Trang trước Phạm vi JS
- Trang tiếp theo Chế độ严格 JS