JavaScript 12

预解析

   说明:浏览器中的js引擎运行JavaScript(js文件,HTML中的js部分等),分为:预解析、代码执行两个步骤

    a. 预解析,会把所有js中的 var (变量声明) 和 function (函数声明) 提升到当前作用域的最前边(也就是先执行var 变量名 和 function 函数名的操作)。
    b. 代码执行, 按照顺序从上到下依次执行。
    
    注: 
          1. 变量预解析:变量提升,只是提升变量声明,不会提升赋值操作,如:var a = 1, 只会将 var a提升
          2. 函数预解析:函数提升,只是提升函数声明,不会调用函数,如:function fun(){...} ,会将整个函数声明提升,但不会调用
 
        // 原始代码
        console.log(a);     
        var a = 1;
        console.log(a);     

        fun();
        function fun(){
            console.log('laile');
        };
        fun();

        // 特殊情况:此时提升的只是 var test 这个变量声明
        test();
        var test = function(){
            console.log('函数2被执行')
        };
        test();
        // js代码的预解析后的代码:
            // 1. 提升 的部分
            var a  
            function fun(){
                console.log('laile')
            }
            var test
            // 2. 依次执行的 部分
            console.log(a); // undefined
            a = 1;
            console.log(a); // 1
            fun();          // laile
            fun();          // laile
            test();         // test is not a function
            test = function(){
                console.log('函数2被执行')
            }
            test();         // 函数2被执行

 

预解析实例:

  

 

 

 

posted @ 2021-07-21 18:26  黑无常  阅读(87)  评论(0)    收藏  举报