Trung BìnhJavaScript iconJavaScript

Sự khác biệt giữa function declaration và function expression trong hoisting là gì?

Function declaration được hoisted hoàn toàn (cả tên và thân hàm), có thể gọi trước khi khai báo.

Function expression chỉ hoisted phần khai báo biến (với var là undefined), không thể gọi trước khi gán.

javascript
// Function declaration — OK
fn(); // hoạt động
function fn() { return "hoisted"; }

// Function expression với var — TypeError
fnExpr(); // TypeError: fnExpr is not a function
var fnExpr = function() { return "not hoisted"; };

// const/let expression — ReferenceError
arrowFn(); // ReferenceError (TDZ)
const arrowFn = () => "also not hoisted";

Xem toàn bộ JavaScript cùng filter theo level & chủ đề con.

Mở danh sách JavaScript