概念:函数或者变量都会有一个提前解析的过程,js会把函数或者变量提前解析一下、解析到它们对应的作用域最开始的位置
1、先找 var 、function 关键字以及参数
2、如找到var 或者参数、会给它们赋值 undefined ; 如找到函数 function ,就会把整个函数都拿过来
3、把找到的东西放到对应的作用域最开始的位置
4、逐行执行代码
(按照预定义的步骤来解析代码)
//例子1
<script>
console.log(a) // undefined
var a = 10;
console.log(a) // 10
</script>
//例子2
<script>
var b = 20;
(function fn () {
// var b = undefined; (找到变量b提到函数最前边)
console.log(b) // undefined
var b = 12;
})()
</script>
//例子3
<script>
var c = 10;
function fn1(){
console.log(c); //10
c=20;
}
fn1();
console.log(c) //20
</script>