函数柯里化

159 阅读1分钟

普通函数

function fn(a, b) {
    return a + b
}
console.log(fn(3, 5))//8

//let sum = (a, b) => { return a + b }
let sum=(a,b)=>a+b
console.log(sum(5, 9))//14

柯里化函数

通俗来说,每次调用时,只接收一部分参数,并在内部返回一个函数,然后继续调用剩余的参数,又返回一个函数,以此类推,直到最后。

let getSum = x => y => x + y
console.log(getSum(1)(2))//3

let add = x => y => z => x + y + z
console.log(add(3)(4)(5))//12
console.log(add(1, 2)(3)(4, 5, 6))//8

柯里化函数原理(利用了闭包的原理)

function multilRes(x) {
    return function (y) {
        return function (z) {
            return x * y * z
        }
    }
}
console.log(multilRes(2)(3)(4))//24

使用场景

  • 参数复用
  • 延迟执行
  • 动态创建