13. 柯里化原理模拟

1/27/2023 js
function getSum(a,b,c) {
  return a + b + c
}
const curried = curry(getSum)
console.log(curried(1, 2, 3))
console.log(curried(1)(2, 3))
console.log(curried(1, 2)(3))

// 柯里化原理模拟
// 调用curry方法,传递一个纯函数,调用完成之后返回一个函数,这个函数是柯里化之后的函数
function curry(func) {
  return function curriedFn(...args) {
    // 判断实参和形参的个数
    if(args.length < func.length) {
      return function() {
        // 参数合并
        // 伪数组转换为数组  Array.from(arguments)  【常见的伪数组:函数中的arguments】
        // 合并两个数组  concat()方法
        return curriedFn(...args.concat(Array.from(arguments)))
      }
    }
    return func(...args)
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
最近更新时间: 2/4/2023, 10:01:08 AM
    강남역 4번 출구
    Plastic / Fallin` Dild