3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您必須以某種方式告知信號(hào)鏈的末端,在該處您將要返回結(jié)果號(hào)而不是其他函數(shù)。您可以選擇:
使它返回固定次數(shù)的函數(shù)-這是像您一樣使用語(yǔ)法的唯一方法,但這很無(wú)聊??纯碄PaulS的答案。您可能使第一次調(diào)用(func(n))為多少參數(shù)的個(gè)數(shù)sum是咖喱。
在某些情況下返回結(jié)果,例如在不帶任何參數(shù)的情況下調(diào)用該函數(shù)(@PaulS的第二個(gè)實(shí)現(xiàn))或具有特殊值的情況下(null在@AmoghTalpallikar的答案中)。
在返回值的函數(shù)對(duì)象上創(chuàng)建一個(gè)方法。valueOf()非常適合,因?yàn)樗鼘⒃趯⒑瘮?shù)強(qiáng)制轉(zhuǎn)換為原始值時(shí)調(diào)用。實(shí)際觀看:
function func(x) {
function ret(y) {
return func(x+y);
}
ret.valueOf = function() {
return x;
};
return ret;
}
func(2) // Function
func(2).valueOf() // 2
func(2)(3) // Function
func(2)(3).valueOf() // 5
func(2)(3)(4)(5)(3) // Function
func(2)(3)(4)(5)(3)+0 // 17

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
好,(2)(3)部分是正確的。調(diào)用func(2)將返回you res
,這是一個(gè)函數(shù)。但是然后,調(diào)用(3)將返回您的結(jié)果res
,這是一個(gè)數(shù)字。因此,當(dāng)您嘗試致電(4)時(shí)就會(huì)出現(xiàn)問(wèn)題。
對(duì)于您要嘗試執(zhí)行的操作,我看不到Javascript如何預(yù)測(cè)您位于鏈的末尾,并決定返回?cái)?shù)字而不是函數(shù)。也許您可以使用對(duì)象屬性以某種方式返回具有 “結(jié)果”屬性的函數(shù),但是大多數(shù)情況下,我只是好奇您為什么要嘗試以這種方式執(zhí)行操作。顯然,對(duì)于您的特定示例,最簡(jiǎn)單的方法就是將數(shù)字相加,但是我猜您會(huì)在某些方面走得更遠(yuǎn)。
添加回答
舉報(bào)