柯里化

题目

function add(n){
    return n + 2
}

function sub(n){
    return n -3
}

function square(n){
   return  n * 3
}

function cube(n){
   return  n * 3
}

const r1 = add(sub(square(cube(2))));
const r2 = compose(add, sub, square, cube)(2);

// 实现此函数,使r2和r1的结果相等
function compose(){

}

答案

function compose(...params){
  return function (arg){
    return Array.from(params).sort(() => -1).reduce((pre, next) => next(pre), arg)
  }
}

解析

  • 主要考察柯里化(提前收集参数)

  • 考察数组的reduce

Last updated