The output is `undefined, function`. This demonstrates the difference in hoisting behavior between variable declarations and function assignments. When using `var bar = function() {};`, only the variable declaration (`var bar`) is hoisted to the top of the scope, not the function assignment. This means that before the assignment line, `bar` exists but has the value `undefined`, so `typeof bar` returns 'undefined'. After the assignment line, `bar` references a function object, so `typeof bar` returns 'function'. This behavior highlights why function expressions can't be used before they're defined in the code—unlike function declarations, which are hoisted entirely. If `bar` had been defined using a function declaration (`function bar() {}`), both `typeof` calls would return 'function' since the entire function would be hoisted.