提升

  

   a=2;
   var a;
   console.log(a)//2

以上相当于 

var a;
a=2;
console.log(a)
 console.log(a)//undefined
 var a=2;
  /*  相当于 
        var a=2;
        console.log(a);
        a=2 */

 

foo();//TypeError
bar()//ReferenceError
var foo=function bar(){
        }

   /*  以上相当于:
        var foo;
        foo()
        bar()
        foo()=function() */
    // 1.函数优先 函数声明和变量声明都会被提升,但是函数首先被提升
   /*  相当于
    function foo(){
        console.log(1)

    }
    foo()
    foo=function(){
        console.log(2)
    } */
    // 2.函数声明可覆盖
    // 3.在一个普通内部的函数声明会被提升到所在作用域的顶部

    foo();
    var foo;
    function foo(){
        console.log(1)
    }
    foo=function (){
        console.log(2)
    }//1
    foo()//TypeError: foo is not a function
    var a=true;
    if(a){
        function foo(){
            console.log("a")
        }
    }else{
        function foo(){
            console.log("b")
        }
    }



 

 

posted @ 2020-07-29 14:04  minfight  阅读(130)  评论(0)    收藏  举报