變量和函數提高

js代碼的執行分爲兩個步驟函數

  • 1.預解析code

    提高(hoisting)
     JavaScript代碼在預解析階段,會對以var聲明的變量名,和function開頭的語句塊,進行提高操做
  • 2.執行ip

    func();
       function func(){
           alert("Funciton has been called");
       }
    
       //變量的提高
      alert(a);
       var a = 1;
    
       //提高以後的代碼模擬
       var a;
       alert(a);
       a = 1;
  • 函數同名,如何提高ci

    預處理的時候,會將兩個函數所有提高,可是後面的函數會覆蓋掉前面函數it

    func1();  //last
       function func1(){
           console.log('This is first func1');
      }
    
      func1();  //last
       function func1(){
           console.log('This is last func1');
      }
       //預解析提高後的代碼
       function func1(){
           console.log('This is first func1');
       }
    
       function func1(){
           console.log('This is last func1');
      }
       func1();  //last
       func1();  //last
  • 變量和函數同名io

    在提高的時候,若是有變量和函數同名,會忽略掉變量,只提高函數console

    alert(foo); //undefined  函數體
       function foo(){}
       var foo = 2;
       alert(foo); //2
       //預解析 提高後的代碼
       function foo(){};
       alert(foo);
       foo=2;
       alert(foo);
相關文章
相關標籤/搜索