1. 程式人生 > >JavaScript函式宣告和函式表示式區別

JavaScript函式宣告和函式表示式區別

在定義函式時,我們一般使用下面這兩種方法:

 用函式宣告建立的函式:

  1.     function a() {
  2.     }

用函式表示式建立的函式:

  1.     var b = function() {
  2.     }

當我們執行 :

  1.  console.log(a); //輸出 function a() { }
  2.  console.log(a.name); //輸出 a ----函式名
  3.  function a() {
  4.  }

當我們執行:

  1.   console.log(b);             //輸出 undefined
  2. console.log(b.name) //出錯
  3.   var b = function() {
  4.     }

    出現此現象的原因是,在指令碼剛開始執行時,由函式宣告建立的函式會進行初始化優先讀取,將關鍵字 function

後面的字串,即函式名 儲存函式的 name 屬性中;而此時由函式表示式建立的函式並未進行這一過程,它所以 

name 屬性為空。對於函數宣告,js解析器會優先讀取,確保在有程式碼執行之前宣告已經被解析,而函式表示式,如同

定義其它基本型別的變數一樣,只在執行到某一句時也會對其進行解析。