柯里化函数无法输出值?详解错误原因及解决方案
首先,你需要将 'keLi' 函数返回 'add' 函数,因为你想要调用 'keLi' 函数时返回的是一个能够继续接收参数的函数,这个函数就是 'add' 函数。
其次,在 'add' 函数中,你需要将传入的参数存储到数组 'arr' 中,而不是创建一个名为 'arrs' 的变量。同时,由于 'add' 函数是柯里化函数,你需要将 'sum' 函数的参数从 'a,b,c,d' 改为 '...args',表示将 'add' 函数接收到的参数传递给 'sum' 函数。
最后,在调用 'keLi' 函数时,你需要将 'sum' 函数的参数改为一个数组 '[1,2,3,4]',表示将这四个数作为一个整体传递给 'keLi' 函数。
修改后的代码如下:
function sum(a,b,c,d){
return a+b+c+d;
}
function keLi(n){
let arr=[];
function add(...args){
arr = [...arr,...args]
if(arr.length<n.length){
return add;
}else{
return sum(...args);
}
}
return add;
}
let m = keLi([1,2,3,4]);
console.log(m(5)(6)(7)(8)); // 28
在调用 'm' 函数时,你需要像这样使用 'm(5)(6)(7)(8)',表示依次传入四个参数,最终输出柯里化后的函数的返回值。输出结果为 '28',表示柯里化后的函数成功求出了传入参数的和。
原文地址: https://www.cveoy.top/t/topic/l4Ph 著作权归作者所有。请勿转载和采集!