Functional Programming 系列(三)- 一級函式 & 高階函式
安安大家!這次要說的是一級函式跟高階函式,但由於這兩個其實也不是什麼艱深的東西,所以大家可以抱持著輕鬆一點的態度來閱讀這篇文章😂。
一開始想先來說說讓人容易搞混的點(也是筆者自己在找資料時覺得疑惑的),就是這兩個東西的說明怎麼有點相似?
這是因為他們是「不同維度的東西」。
一級函式是「語言」的特性高階函式是「函式」的特性
所以我們可以這樣說:
- Javascript 這個語言符合一級函式的特性。
- jsFunction 這個函式符合高階函式的特性。
基本上,符合一級函式特性的語言,才有可能有高階函式的出現。
OK!先有初步的了解後,接下來我們就正式來介紹這兩個東西吧!
一級函式
對函式與其他型別物件一視同仁,「對其他型別物件能做的事,對函式也能做」,這樣的語言我們就可以說它符合一級函式:
高階函式
只要是可以將函式作為參數,或是將函式作為返回值的函式,我們就可以稱之為高階函式。
其實在上面的例子我們已經使用到高階函式了,所以我們直接舉幾個常見的例子給大家看吧!
先來個最多人會拿來舉例的XDD:
- Array.prototype.filter
- Array.prototype.map
- Array.prototype.reduce
再來就是如果你曾經處理過 ES6 以前的非同步請求,就一定會使用到的Callback Function 啦!
當然也不是只有以前在處理非同步請求才會需要用到 Callback Function,只是有經歷過那種 Callback Function Hell 的話感觸應該會比較深 🤣🤣🤣。
這邊附上一個我很久以前還在用 Jquery 作為主要開發工具征戰的時候,很常用到的 Ajax 封裝 Function:
以上就是我對於一級函式以及高階函式的說明,如果你對這兩個名詞還不熟悉的人,希望透過我的文章可以幫助到你!
最後,如果有覺得我有那裡說錯或是沒講解好的地方,歡迎留言告訴我讓我可以改進喔 😆😆😆!