复习-预解析

90 阅读1分钟

JS复习-预解析

JS预解析

JS引擎运行分为两步:预解析和代码执行

  1. 预解析
    JS引擎会把代码中的var(变量)和function(函数)提升到当前作用域的最前面。

(1)变量提升:把所有的变量声明提升到当前作用域最前面,不提升赋值操作。

(2)函数提升:把所有的函数声明提升到当前作用域最前面,不调用函数。

  1. 代码执行 按照预解析代码书写的顺序从上到下执行。

举例

            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);