JavaScript函式宣告和函式表示式區別
阿新 • • 發佈:2019-01-09
在定義函式時,我們一般使用下面這兩種方法:
用函式宣告建立的函式:
- function a() {
- }
用函式表示式建立的函式:
- var b = function() {
- }
當我們執行 :
- console.log(a); //輸出 function a() { }
- console.log(a.name); //輸出 a ----函式名
- function a() {
- }
當我們執行:
- console.log(b); //輸出
- var b = function() {
- }
出現此現象的原因是,在指令碼剛開始執行時,由函式宣告建立的函式會進行初始化優先讀取,將關鍵字 function
後面的字符串,即函式名 儲存在該函式的 name 屬性中;而此時由函式表示式建立的函式並未進行這一過程,它所以
name 屬性為空。對於函數宣告,js解析器會優先讀取,確保在所有程式碼執行之前宣告已經被解析,而函式表示式,如同
定義其它基本型別的變數一樣,只在執行到某一句時也會對其進行解析。