我有一个更高阶的函数,虽然第一种情况 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/

10-10 11:29