1 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您沒(méi)有將參數(shù)傳遞給包裝的函數(shù)。該add函數(shù)嘗試對(duì)兩個(gè)undefined值求和,結(jié)果為NaN(不是數(shù)字)。
您必須將參數(shù)傳遞給包裝函數(shù):
return function(a, b) {
return inputFunc(a, b); // <<<
}
由于sometimes是高階函數(shù),需要包裝不同的函數(shù),參數(shù)數(shù)量不斷變化,無(wú)法知道被包裝函數(shù)的實(shí)現(xiàn)。為確保這一點(diǎn),您應(yīng)該使用剩余參數(shù)(將參數(shù)收集到數(shù)組)和傳播(將數(shù)組轉(zhuǎn)換回參數(shù))將參數(shù)傳遞給包裝函數(shù)。
let add = (a, b) => {
return a + b;
};
myFunc = sometimes(add);
const outputArr = [];
for (let i = 0; i < 3; i++) {
outputArr.push(myFunc(2 + i, 3 + i));
}
function sometimes(inputFunc) {
return function(...args) {
return inputFunc(...args)
}
}
console.log(outputArr);
添加回答
舉報(bào)