JS复习-预解析
JS预解析
JS引擎运行分为两步:预解析和代码执行
- 预解析
JS引擎会把代码中的var(变量)和function(函数)提升到当前作用域的最前面。
(1)变量提升:把所有的变量声明提升到当前作用域最前面,不提升赋值操作。
(2)函数提升:把所有的函数声明提升到当前作用域最前面,不调用函数。
- 代码执行 按照预解析代码书写的顺序从上到下执行。
举例
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;
a = b = c = 9;
// var a=b=c=9 相当于 var a =9;b=9;c=9
// 集体声明应该是 var a=9,b=9,c=9
console.log(a);
console.log(b);
console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);