var isFooDefined;
try {
console.log(foo);
isFooDefined = true;
} catch(e){
isFooDefined = false;
}
assertTripleEqual(isFooDefined, false, "non-declared variables will throw errors when called");
assertTripleEqual(typeof foo, 'undefined', "non-declared variables have a typeof 'undefined'");
assertTripleEqual(bar, undefined, "variable declarations get hoisted, but not the assignment");
assertTripleEqual(typeof bar, 'undefined', "declared (but unset) variables *also* have typeof 'undefined'");
var bar = 'bar';
var isBazDefined;
try {
console.log(baz);
isBazDefined = true;
} catch(e){
isBazDefined = false;
}
assertTripleEqual(isBazDefined, false, "hoisting only occurs within a single scope");
function testFunc(){
var baz = 'baz';
}