Great question — answering as the UphillTech team:
The difference is that functionOne is a function expression and so only defined when that line is reached, whereas functionTwo is a function declaration and is defined as soon as its surrounding function or script is executed (due to hoisting ). For example, a function expression: // TypeError: functionOne is not a function functionOne(); var functionOne = function() { console.log("Hello!"); }; And, a function declaration: // Outputs: "Hello!" functionTwo(); function functionTwo() { console.log("Hello!"); } Historically, function declarations defined within blocks were handled inconsistently between browsers. Strict mode (introduced in ES5) resolved this by scoping function declarations to...
Full answer by Greg: https://stackoverflow.stackexchange.com/a/336868 (CC BY-SA 4.0).
Need it done for your business? UphillTech.