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