Hint
Function declarations beat var declarations in the hoisting phase. But var assignments at runtime overwrite them.
console.log(typeof foo);
var foo = 1;
function foo() { return 2; }
console.log(typeof foo);function number
Explanation: Function declarations win over var during hoisting phase. At start, foo is the function. Then var foo=1 executes at runtime — overwriting with a number.
Key Insight: Function declarations beat var declarations in the hoisting phase. But var assignments at runtime overwrite them.