Functional Programming 系列(三)- 一級函式 & 高階函式

00如是說
Coding Fighter
Published in
Dec 14, 2020
Photo by Green Chameleon on Unsplash

安安大家!這次要說的是一級函式高階函式,但由於這兩個其實也不是什麼艱深的東西,所以大家可以抱持著輕鬆一點的態度來閱讀這篇文章😂。

一開始想先來說說讓人容易搞混的點(也是筆者自己在找資料時覺得疑惑的),就是這兩個東西的說明怎麼有點相似?

這是因為他們是「不同維度的東西」。

一級函式是「語言」的特性高階函式是「函式」的特性

所以我們可以這樣說:

  • Javascript 這個語言符合一級函式的特性。
  • jsFunction 這個函式符合高階函式的特性。

基本上,符合一級函式特性的語言,才有可能有高階函式的出現。

OK!先有初步的了解後,接下來我們就正式來介紹這兩個東西吧!

一級函式

對函式與其他型別物件一視同仁,「對其他型別物件能做的事,對函式也能做」,這樣的語言我們就可以說它符合一級函式:

高階函式

只要是可以將函式作為參數,或是將函式作為返回值的函式,我們就可以稱之為高階函式。

其實在上面的例子我們已經使用到高階函式了,所以我們直接舉幾個常見的例子給大家看吧!

先來個最多人會拿來舉例的XDD:

  • Array.prototype.filter
  • Array.prototype.map
  • Array.prototype.reduce

再來就是如果你曾經處理過 ES6 以前的非同步請求,就一定會使用到的Callback Function 啦!

當然也不是只有以前在處理非同步請求才會需要用到 Callback Function,只是有經歷過那種 Callback Function Hell 的話感觸應該會比較深 🤣🤣🤣。

這邊附上一個我很久以前還在用 Jquery 作為主要開發工具征戰的時候,很常用到的 Ajax 封裝 Function:

以上就是我對於一級函式以及高階函式的說明,如果你對這兩個名詞還不熟悉的人,希望透過我的文章可以幫助到你!

最後,如果有覺得我有那裡說錯或是沒講解好的地方,歡迎留言告訴我讓我可以改進喔 😆😆😆!

--

--