1. Hoisting javascript là gì?
Hoisting là hành vi mặc định của JavaScript về việc di chuyển các khai báo lên đầu để compiled hay thực thi code của bạn. Cụ thể khi một file javascript compiled bởi browser, nhưng trước khi nó thực sự executed thì Function declaration
sẽ được stored in memory và được đẩy lên nhưng chính xác ta vẫn nhìn nó vẫn ở vị trí cũ. Và khi javascript file thực sự run thì browser thực sự đã biết những function đó trước khi đọc code của file javascript.
2. Ví dụ về Hoisting javascript?
Ví dụ, nếu bạn khai báo một biến trong một hàm như sau:
function example() { console.log(myVariable); var myVariable = 10; } example();
Thì bộ máy thực thi sẽ hiểu như sau:
function example() {
var myVariable;
console.log(myVariable);
myVariable = 10;
}example();
Do đó, giá trị của biến myVariable
sẽ là undefined
thay vì bị lỗi ReferenceError.
Tuy nhiên, hoisting chỉ áp dụng với các biến được khai báo bằng var
, let
và const
trong phạm vi của một function hoặc một block scope. Các biến được khai báo bằng var
sẽ được hoisted lên đầu phạm vi của function, còn các biến được khai báo bằng let
và const
sẽ không được hoisted và sẽ bị lỗi ReferenceError nếu truy cập trước khi được khai báo.