预解析案例(有点意思( •̀ ω •́ )✧)
- 源代码
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
- 经过预解析之后
function f1() { //函数提升
var a = 9; //声明且赋值,局部变量
b = 9; //未声明直接赋值,全局变量
c = 9; //未声明直接赋值,全局变量
//a = b = c = 9;
//正常的集体声明应该是var a = 9, b = 9, c = 9
// 而不是var a = b = c = 9;
console.log(a); //9
console.log(b); //9
console.log(c); //9
}
f1();
console.log(c); //9
console.log(b); //9
console.log(a); //报错 a是局部变量