函数声明提升
在条件控制语句中的函数声明解释器在编译阶段无法识别并提升,执行阶段才会被声明存在
foo(); // TypeError: foo is not a function var a = false; if(a) { function foo() { console.log("a"); } } else { function foo() { console.log("b"); } }
console.log(foo); // undefined var a = false; if(a) { function foo() { console.log("a"); } } else { function foo() { console.log("b"); } } foo(); // b