1.只有声明本身会被提升,而赋值或其他运行逻辑会被留在原地
a=2;
var a;
console.log(a);
//2
console.log(a);
var a=2;
//undefined
2.函数声明会被提升,但函数表达式不会被提升。
foo()
function foo(){
console.log(1);
}
//1
foo()
bar()
var foo=function bar(){
console.log(1);
}
//TypeError:foo is not a function
//ReferenceError:bar is not defined