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() {...}
|
|