關於js作用域變量和函數聲明提升的總結

    var a = 1;

    function a() {
      console.log(3);
    }

    console.log(a); // 1
    a();            // 報錯

 

    var a;

    function a() {
      console.log(2);
    }

    console.log(a); // 打印函數體
    a();            // 2

 一:

預解析時,函數聲明創建的函數整體會提升到所在執行環境【作用域】的頂部,

            函數表達式創建的函數,僅僅提升變量名到所在執行環境【作用域】的頂部。

二:

當函數聲明和變量聲明同時存在時,函數聲明的優先級更高;

當變量聲明但沒有賦值並且函數名和變量名一致時,此名稱仍指向函數;

當變量名賦值且函數名和變量名一致,此名稱指向變量,函數被取代,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章