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