//Function declaration function foo() { return 5; } //Anonymous function expression var foo = function() { return 5; } //Named function expression var foo = function foo() { return 5; }
function declarations loads before any code is executed.While function expressions loads only
when the interpreter reaches that line of code.
So if you try to call a function expression before it’s loaded, you’ll get an error
But if you call a function declaration, it’ll always work. Because no code can be called until all declarations are loaded.
Function Expression
alert(foo()); // ERROR! foo wasn't loaded yet var foo = function() { return 5; }
Function Declaration
alert(foo()); // Alerts 5. Declarations are loaded before any code can run. function foo() { return 5; }
The difference is in First case foo() is defined at run-time, whereas in second case foo() is defined at parse-time
for a script block