What causes the different behaviors between “var” and “let” when assign them a returned value of a function which throws an error

Declarations of var variables get hoisted – the variable name initialization gets hoisted to the top of the containing function (or, if no function, to the top of the outer block). So var withVar = (function() {throw ‘error!’})() is parsed by the interpreter as var withVar; withVar = (function() {throw ‘error!’})() The same is not … Read more

Chrome console already declared variables throw undefined reference errors for let

This happens when you introduce the temporal dead zone to the global scope. As you might know, let declarations are hoisted but left uninitialised. Due to control flow, it can happen that a variable is never initialised: function …() { if (false) example; // would throw a ReferenceError if it was evaluated … // do … Read more

Are variables declared with let or const hoisted?

@thefourtheye is correct in saying that these variables cannot be accessed before they are declared. However, it’s a bit more complicated than that. Are variables declared with let or const not hoisted? What is really going on here? All declarations (var, let, const, function, function*, class) are “hoisted” in JavaScript. This means that if a … Read more