重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
函數柯里化(黑人問號臉)???Currying(黑人問號臉)???妥妥的中式翻譯既視感;下面來一起看看究竟什么是函數柯里化:
維基百科的解釋是:把接收多個參數的函數變換成接收一個單一參數(最初函數的第一個參數)的函數,并返回接受剩余的參數而且返回結果的新函數的技術。其由數學家Haskell Brooks Curry提出,并以curry命名。
概念往往都是干澀且難懂的,讓我們用人話來解釋就是:如果我們不確定這個函數有多少個參數,我們可以先給它傳入一個參數,然后通過JS閉包(如若不懂JS閉包,請先學習閉包知識點再來學習本篇博文https://www.jb51.net/article/171398.htm)來進行返回一個函數,內部函數接收除開第一個參數外的其余參數進行操作并輸出,這個就是函數的柯里化;
舉個小例子:
場景(需求):
眾所周知程序員每天加班的時間還是比較多的,如果我們需要計算一個程序員每天的加班時間,那么我們的第一反應應該是這樣;
var overtime=0; function time(x){ return overtime+=x; } time(1); //1 time(2); //3 time(3); //6