Variable hoisting
Hoisting là một khái niệm trong Javascript mô tả chúng ta có thể sử dụng biến rồi khai báo nó sau.
Giá trị của biến khi khai báo var là undefined. Khi khai báo với let và const vẫn được hoist nhưng nó không có giá trị nên sẽ báo lỗi ReferenceError.
Ví dụ viết code thế này:
|
|
và cách viết code này là giống nhau:
|
|
Một ví dụ khi sử dụng cùng tên biến
|
|
Vì tính chất hoisting nên chúng ta nên đặt tất cả các khai báo biến với var ở càng gần đầu của hàm càng tốt. Mã code Javascript như vậy sẽ dễ hiểu, trong sáng hơn.
Hoisting với khi khai báo từ khóa với let hoặc const
Khi hosting với từ khóa let hoặc const sẽ báo lỗi không truy cập được biến khi chưa khởi tạo.
|
|
Function hoisting
Trong trường hợp hàm, chỉ có các khai báo hàm (Function declaration) được hoisting còn biểu thức hàm (Function expression) thì sẽ nhận giá trị undefined tương tự như khi khai báo biến.
Biểu thức hàm là hàm có dạng var func = function() {...}. Còn khai báo hàm sẽ có dạng function foo() {...}
|
|