我有一个更高阶的函数,虽然第一种情况 multiply(4,5)
可以按预期工作,但是否可以传递多个参数,如 multiply(2)(4, 5)
。在这种情况下,答案是 8,但是可以以这样的方式创建一个柯里化函数,以便它给出 40 作为结果
function multiply(s) {
return function(b) {
return s * b;
}
}
console.log(multiply(4)(5))
console.log(multiply(2)(4, 5))
最佳答案
您可以使用 rest parameters ...
并收集两个函数的所有参数并返回简化的结果。
function multiply(...a) {
return function(...b) {
return [...a, ...b].reduce((a, b) => a * b);
};
}
console.log(multiply(4)(5)); // 20
console.log(multiply(2)(4, 5)); // 40
console.log(multiply(3, 2)(4, 5)); // 120
关于javascript - 如果参数之一包含多个值,如何使用柯里化函数工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54214678/