变量提升
1.先声明 后赋值
2.函数声明会被提升,函数表达式却不会
3.函数声明会提升到普通变量之前
源码
foo();
newfoo();//TypeError
bar();//ReferenceError
function foo() {}
var newfoo = function bar() {}
js引擎执行顺序
foo();
var newfoo
function foo(){}
newfoo=function(){
var bar
}
4 var a = 2 js引擎先编译(声明变量或函数)在执行(变量赋值)
不要将var声明和函数声明混在一起