1、js引擎运行js分为2步: 预解析 代码执行
(1)、预解析js引擎会把js里面所有的var还有function提升到当前作用域的
最前面
(2)代码执行 按照代码书写顺序从上往下执行
2、预解析 分为 变量预解析(变量提升) 和 函数预解析(函数提升)
(1)变量提升 就是把所有的变量声明提升到当前作用域的最前面 不提升赋值操作
代码例子:
<script>
// 这个没问题--如果放在后面就不行了
mode();
function mode() {
console.log("sdadasdas");
}
console.log(num); //坑1 undefined
var num = 10;
// 相当于执行了以下代码
/*
var num;
console.log(num);
num=10;
*/
fun(); // fun is not a function
var fun = function () {
console.log(22);
}
// 相当于执行了以下代码:
/*
var fun;
fun();
fun=function(){
console.log(22);
}
*/
</script>
运行结果: