JavaScript预解析
<script>
console.log(num);
var num = 10; //预解析提前声明变量,不赋值
fun();//报错
var fun = function(){
console.log(22);
}
</script>
案例一:
<script>
var num = 10;
fun();
function fun(){
console.log(num); //undefined
var num = 20;
}
// 预解析相当于如下执行过程,先全局变量提升,再作用域变量提升
// var num;
// function fun(){
// var num;
// console.log(num);
// num = 20;
// }
// fun();
</script>
案例二:
<script>
var num = 10;
function fn(){
console.log(num);//undefined
var num = 20;
console.log(num);//20
}
fn();
// 执行顺序
// var num;
// function fn(){
// var num;
// console.log(num);
// num = 20;
// console.log(num);
// }
// num = 10;
// fn();
f1();
console.log(c);//9
console.log(b);//9
console.log(a);//报错
function f1(){
var a=b=c=9;
//相当于var a = 9; b=9;c=9; b和c当全局变量看
//集体声明 var a=9,b=9,c=9;
console.log(a);//9
console.log(b);//9
console.log(c);//9
}
</script>