1.函数声明和函数表达式
foo();//正常运行,函数声明的提升,因为foo在代码运行前就被创建啦function foo(){};
foo();//出错,赋值语句只在运行时执行,此时的foo为 undefined var foo=function(){};
var foo = function bar() { bar(); // 正常运行,函数名在函数内总是可见的 } bar(); // 出错:ReferenceError,bar已经赋值给了foo