函數柯里化概念: 柯里化(Currying)是把接受多個參數的函數轉變?yōu)榻邮芤粋€單一參數的函數,并且返回接受余下的參數且返回結果的新函數的技術。
1)粗暴版
2)柯里化解決方案
參數長度固定
對于add(3)(4)(5),其執(zhí)行過程如下:先執(zhí)行add(3),此時m=3,并且返回temp函數;
執(zhí)行temp(4),這個函數內執(zhí)行add(m+n),n是此次傳進來的數值4,m值還是上一步中的3,所以add(m+n)=add(3+4)=add(7),此時m=7,并且返回temp函數
執(zhí)行temp(5),這個函數內執(zhí)行add(m+n),n是此次傳進來的數值5,m值還是上一步中的7,所以add(m+n)=add(7+5)=add(12),此時m=12,并且返回temp函數
由于后面沒有傳入參數,等于返回的temp函數不被執(zhí)行而是打印,了解JS的朋友都知道對象的toString是修改對象轉換字符串的方法,因此代碼中temp函數的toString函數return m值,而m值是最后一步執(zhí)行函數時的值m=12,所以返回值是12。參數長度不固定