预解析
浏览器中有JavaScript解析器来执行JavaScript代码。
JavaScript解析器在运行代码时分为两步:预解析和代码执行。
- 预解析 :JS解析器会把JS里所有的var和function提升到当前作用域的最前面。
- 代码执行 :按照代码书写的顺序,从上到下往下执行。
预解析还分为变量预解析(变量提升)和函数预解析(函数提升)
- 变量提升 :就是把所有声明变量的提升到当前作用域的最前面。(不提升赋值操作)
- 函数提升 :就是把所有函数声明提升到当前作用域的最前面。(不调用函数)
案例
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;
console.log(a); //9
console.log(b); //9
console.log(c); //9
};
f1();
console.log(c); //9
console.log(b); //9
console.log(a); //报错