js的运行机制

js引擎运行js分为两步: 预解析 代码执行.
一 预解析: 

    1 js引擎会把所有的var 还有function提升到当前作用域的最前面
    2预解析分为 变量预解析(变量提升) 和函数预解析(函数提升)
         (1)变量提升 就是把所有的变量声明提升到当前作用域的最前面 不提升赋值
         (2)函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
二 代码执行: 按照代码从上到下执行
示例1:
<script>   
       var num = 10;
       function fn(){
           console.log(num);
           var num = 20;
           console.log(num);

                        }
                 fn();
</script>
//相当于以下代码----控制台:undefined
//<script> 
// var num;
        // function fn(){
        //     var num;
        //     console.log(num);
        //     num = 20;
        //     console.log(num);
        // }
        // num = 10;
//<script> 
示例2:
<script>
 f2()
        console.log(c1);
        console.log(b1);
        console.log(a1);
        function f2(){
            var a1=b1=c1=9;
            console.log(a1);
            console.log(b1);
            console.log(c1);
        }
</script>
//-控制台:9-9-9-9-9-a is not defined---
//相当于以下代码--------
 //  function f2(){
        //      var a1;
        //      a1 = b1 = c1 = 9;
        //      b1 和 c1 没有var声明  当全局变量看
        //      外部可以调用b1 c1
        //     console.log(a1);
        //      console.log(b1);
        //     console.log(c1);
        //  }
        //  f2()
        //  console.log(c1);
        //  console.log(b1);
        //  console.log(a1);
点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像