What is the difference between a function statement and a function expression in JavaScript?
A function statement (declaration) is hoisted with its full body, so it can be called before the line. A function expression is assigned to a variable, which is hoisted (undefined with var, TDZ with let/const) but the function body is only assigned at the line.
Verify This Answer
Cross-check this information using these trusted sources:
More FAQs in Function Statement vs Function Expression in JavaScript
No. With var, calling it early throws TypeError because the variable is undefined. With let or const, it throws ReferenceError because the variable is in the Temporal Dead Zone.
Because function declarations are hoisted with their entire body during the memory allocation phase. The engine stores the full function in memory before any code runs, so calling it before the line works.
Use declarations for top-level helpers you want callable from anywhere (hoisting is useful). Use const function expressions (often arrows) for everything else, to enforce declare-before-use and avoid hoisting surprises.
Still have questions?
Browse all our FAQs or reach out to our support team
