The declaration and the value are separate. When hoisted, this code would read something like this:
var a;
var a;
a = function() {};
typeof a; // "function"
a = false;
typeof a; // "boolean"
The two instances of var a are declarations of the variable a, and have nothing to do with the values assigned. The function and false are assignments.
20
u/[deleted] Jul 19 '21
function declarations aren't the only thing that is hoisted, variable declarations with
varare also hoisted.e.g. the following does not work: