I'm Ernie and my friend is Bert and we wrote this code to tell other people which type of birds we like.
var bird = 'Pidgeons';
( function () {
if ( typeof bird === 'undefined' ){
var bird = 'Rubber Duck';
console.log('Ernie loves his ' + bird );
} else {
console.log('Bert loves his ' + bird );
}
}() );
There should be a problem with our code because for some reason I only see 'Ernie loves his Rubber Duck' when I expected to see 'Bert loves his Pidgeons', could you help me?
This is happening because the hoisting problem. Remember that in Javascript there are no block variables.
__match_answer_and_solution__
var bird = 'Pidgeons'; ( function () { if ( typeof bird === 'undefined' ){ bird = 'Rubber Duck'; console.log('Ernie loves his ' + bird ); } else { console.log('Bert loves his ' + bird ); } }() );
assert(inputs[0] === 'Bert loves his Pidgeons');
var inputs = []; var backConsole = console; var console = { log: function (str) { inputs.push(str); backConsole.log(str); console = backConsole; } };