Hoisting là việc tạo ra biến từ trước và gán giá trị cho nó sau. Nếu không chắc chắn về hoisting, có thể dẫn đến một số lỗi.
Ví dụ:
function example() {
var x = 10;
if (true) {
var x = 20;
console.log(x); // 20
}
console.log(x); // 20
}
example();
Trong ví dụ trên, biến x được khai báo bằng var và do đó có phạm vi toàn cục. Khi chúng ta gán giá trị cho nó trong if statement, giá trị của biến x sẽ bị thay đổi cho cả bên ngoài vòng lặp.
Nếu sử dụng let hoặc const thay vì var, kết quả sẽ khác:
Ví dụ:
function example() {
let x = 10;
if (true) {
let x = 20;
console.log(x); // 20
}
console.log(x); // 10
}
example();
Với let hoặc const, phạm vi của biến x chỉ tồn tại trong if statement và do đó giá trị của biến x bên ngoài vòng lặp sẽ không bị thay đổi.