Tuesday, February 21, 2017

Difference between "var f = function" and "function f" in Javascript

Can you tell me what is the difference between these to pieces of code?
var f=function() {
  alert('f u!');
}

function f() {
  alert('f u!');
}

It's only one I can think of and with good code hygiene it is one that should never matter. It is related to 'hoisting', or the idea that in Javascript a variable declaration is hoisted to the top of the function or scope before execution. In other words, I can see there is a function f before the declarations above. And now the difference: 'var f = function' will have its declaration hoisted, but not its definition. f will exist at the beginning of the scope, but it will be undefined; the 'function f' format will have both declaration and definition hoisted, so that at the beginning of the scope you will have available the function for execution.

0 comments: