Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.


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?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: