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

admin發表於2018-08-22

JavaScript中有兩種方式建立函式:

(1).函式宣告方式。

(2).函式表示式方式。

兩者作用應該沒有異議,都可以建立一個函式,但是兩者的區別也是巨大的。

一.函式宣告:

所謂的函式宣告就是以正規的語法方式建立一個函式:

[JavaScript] 純文字檢視 複製程式碼
function functionName(){
  //code
}

函式宣告的語法格式是固定的,必須是function關鍵字+函式名稱+小括號()+大括號的函式體內容。

再來看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
func();
function func(){
  console.log("螞蟻部落");
}

JavaScript程式碼是順序執行的,但func函式依然可以正常執行,因為函式宣告有提升效果。

關於宣告提升可以參閱JavaScript變數和函式宣告宣告前置一章節。

二.函式表示式:

關於表示式的概念可以參閱JavaScript 表示式一章節。

所謂的函式表示式其實就是函式宣告存在於一個表示式語句中,可以是具名的函式,也可以是匿名函式函式。

看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
func()
var func=function(){
  console.log("螞蟻部落");
}

上面的程式碼會報錯,因為通過表示式方式建立一個函式,將函式物件賦值給變數func,變數宣告在預編譯階段是前置,但變數的賦值是發生在執行時階段,所以當呼叫func函式的時候,變數還沒有被賦值,再來看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
newFunc();
var newFunc=function func(){
  console.log("螞蟻部落");
}

上面程式碼是一個不倫不類的表示式方式,當然實際中沒有人這麼用。

其實表示式方式就是將一個函式物件賦值給一個變數,然後再使用此變數呼叫函式,就是一個簡單的賦值語句。

更多關於表示式方式宣告函式可以參閱JavaScript 小括號()分組運算子一章節。

相關文章