In this example, I know that it's going to print undefined.
var bar = typeof foo;
var foo = function() {
console.log('abcd');
}
foo();
console.log(bar); // -> undefined
So I understand that when the variables are hoisted, bar remains above foo, but foo gets executed, so shouldn't the interpreter know what foo is?
Note: I'm trying to understand how the interpreter works. My question isn't about how to fix the above snippet.
foowasn't executed whenbarwas assigned a value oftypeof foo. During hoisting, the value offoowas undefined.