0%

JavaScript 核心 (29) - 函式以及 This 的運作 - 什麼是函式

函式特色

函式屬於物件一種,並且具有以下特性:

  • 具有被呼叫的能力
  • 可以撰寫程式碼的區塊
  • 有屬於自己的 this
  • 具有自己的執行環境
  • 可回傳結果(return)
  • 名稱(選用,匿名函式與具名函式)

函式陳述式

函式陳述式並不會主動回傳結果,而是必須等待呼叫後才會回傳結果

1
2
3
function fn() {
...
}

函式表達式

函式表達式在程式碼執行時,就會將函式回傳到 fn 中,可在細分為 匿名函式具名函式

1
2
3
4
5
6
7
8
9
10
/* 匿名函式 */
var fn = function() {
...
}

/* 具名函式 */
var fnA = function fnB() {
...
}
console.log(fnA, fnB); /* fnB is not defined */

使用時機

專案上到底該使用 函式陳述式 還是 函式表達式 呢?
其實這沒有標準答案,一切還是看團隊一開始的規範文件而訂。
當然,像是 Airbnb 規範就希望都是用 函式表達式,而且還是具名函式,畢竟 函式陳述式 會有所謂的 Hoisting,有時候在 debug 上會需要先釐清運作流程,會增加除蟲時間。

參考資料

六角學院 - JavaScript 核心篇
JavaScript 核心觀念(35)-函式以及 This 的運作-什麼是函式