函数声明提升要在变量提升之前;声明提前是在JavaScript引擎的预编译时进行,是在代码开始运行之前;if和for里的var定义的变量也是会提升的;if 里面的 var 和 function的声明方式,都会存在变量提升,但是并不赋值;立即执行函数是一个函数作用域;在提升的时候,如果有变量和函数同名,则会忽略掉变量,只提升函数;