一:js引擎运行JS代码,分两步:预解析和代码执行
1:预解析 JS引擎会把JS里面所有的var和function提升到当前作用域的去前面
2:代码执行 按照代码书写的顺序从上往下执行
二:预解析分为变量预解析(变量提升)和函数预解析(函数提升)
1:变量提升就是把所有的变量声明提升到当前作用域最前面 不提升赋值操作
2:函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
console.log(num) //undefined
var num = 10
相当于
var num
console.log(num)
num = 10
fun();//报错
var fun = function() {
console.log(22)
}
执行顺序
var fun
fun();
fun = function(){
console.log(22)
}