<script>
//报错1
console.log(num) //输出underfine
var num = 10
//报错2
fn()
var fun = function(){
log(22)
}
</script>
1.js引擎运行js会进行两步:代码预解析 和 代码执行
在代码预解析中js会把里面所有的var 还有 function 都进行 变量提升 和 函数提升,提升到当前作用域的最前面,不提升赋值操作
所以上述代码的运行顺序应该为如下代码所示
<script>
var num
console.log(num)
num = 10
var fun;
fun();
fun = function(){
log(22)
}
</script>