Hacker News new | ask | show | jobs
by mikekchar 3253 days ago
The only reason I can think of is if you want hoisting for some reason. For example, if you want to call functions before they are declared. Personally, I don't like that style, but some people do.
2 comments

Function declarations work like this

  typeof myFn === 'function'; // true
  function myFn() { }
let / const are both hoisted though, they're just hoisted to the top of the current block scope instead of function scope.
From the MDN docs:

"In ECMAScript 2015, let bindings are not subject to Variable Hoisting, which means that let declarations do not move to the top of the current execution context."

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...

Sort of, but the effect is very different due to the "temporal dead zone." Attempting to access a variable declared with `let/const` or const before the declaration will throw an error, vs just getting `undefined` for a variable declared with `var`.
I'm a bit confused. What does "hoisted" mean in this context if accessing the variable before declaration will throw an error?