Skip to content

柯里化函数: 其实就是一种"预先存储"的函数思想 1.首先把一些信息存储到某一个不被释放的上下文中 2.后期基于作用域链机制可以让其下级上下文访问到存储的信息

js
  // 执行fn是为了把一些信息事先存储起来(10, 20)
  // 把返回的小函数再执行,传递另外的一些值,最后再小函数执行时,通过上级上下文拿到之前存储的值(10, 20),最后获取所有数相加的和
  function fn() {
    let outerArgs = Array.from(arguments)
    return function proxy() {
      let innerArgs = Array.from(arguments)
      return outerArgs.concat(innerArgs).reduce((acc, cur) => acc + cur, 0)
    }
  }

  const fn = (...outterArgs) => {
    return (...innerArgs) => {
      return outterArgs.concat(innerArgs).reduce((acc, cur) => acc + cur, 0)
    }
  }

  const fn = (...outterArgs) => (...innerArgs) => outterArgs.concat(innerArgs).reduce((acc, cur) => acc + cur)

  let proxy = fn(10, 20)
  let sum = proxy(30, 40)