JS预解析案例详解
预解析案例分析详解`
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 = b = c = 9;
// 相当于 var a = 9 ; b = 9 ; c = 9;
// b 和 c 没有使用 var 声明所以b和c为全局变量
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
继续进行 函数内部的 变量提升
function f1(){
var a = 9;
b = 9;
c = 9;
// 相当于 var a = 9 ; b = 9 ; c = 9;
//b 和 c 没有使用 var 声明所以b和c为全局变量
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);
预解析之后按照代码顺序进行执行 先调用函数进行对应值的输出
其中函数内部中的 a,b,c均可找到对应值与之对应。
函数外部b和c为全局变量有值与之对应。a在当前作用域没有声明和赋值,会报错。
在控制台输出结果如下: