Hoisting là một kỹ thuật JavaScript di chuyển các biến và khai báo hàm lên đầu phạm vi của chúng trước khi bắt đầu thực thi mã. Trong phạm vi bất kể hàm hoặc biến được khai báo ở đâu, chúng sẽ được chuyển lên đầu phạm vi.
Lưu ý rằng việc nâng cấp chỉ di chuyển khai báo trong khi các nhiệm vụ được giữ nguyên.
Ví dụ
console.log(functionBelow("Hello")); function functionBelow(greet) { return `${greet} world`; } console.log(functionBelow("Hi"));
Đầu ra
Hello world Hi world
Lưu ý rằng khai báo hàm sau khi nó được gọi nhưng vẫn được gọi. Điều này có thể xảy ra do chức năng cẩu.
Cũng lưu ý rằng nó không hoạt động khi bạn gán các hàm như biến.
console.log(functionBelow("Hello")); var functionBelow = function(greet) { return `${greet} world`; } console.log(functionBelow("Hi"));
Điều này sẽ không thành công với lỗi:functionBelow không phải là một hàm
Nếu bạn xóa var, nó sẽ không thành công với lỗi:functionBelow không được xác định
Lưu ý rằng khi nó được khai báo bằng var, nó được lưu vào dưới dạng một biến trong ngữ cảnh. Nhưng nó vẫn không được xác định. Điều này được gọi là cẩu biến. Do thuộc tính này, các hàm ẩn danh và mũi tên không bao giờ được đưa vào JavaScript.