柯里化明白与JS完成

什么是柯里化

严格来说一个函数只要一个参数,将具有多个参数的函数转换为单参数函数链的体式格局,这就是currying。厥后演变成支撑不定参数的函数链的情势流行起来。

// 在JS中能够罕见如许挪用体式格局
add(1)(2)(3) // 6
add() // 输出效果
> 6
// 或许
add(1)(2)(3)() === 6
// 或许
add(1)
add(2)
add(3)
add() === 6

柯里化的作用

  1. 闭包
  2. 耽误实行
  3. 参数复用

JS中完成柯里化

这是个柯里化的装潢器

function Currying(fn) {
  let args = [].slice.call(arguments,1);
  function g() {
    if(arguments.length > 0){
      args.push.apply(args, arguments)
      return g
    } else {
      return fn.apply(fn, args)
    }
  }
  return g
}

做个测试

// 定义一个乞降函数
function add() {
  let count = 0
  if(arguments.length > 0) {
    for(let i = 0; i < arguments.length; i++){
      count += arguments[i]
    }
  }
  return count
}
// 测试
const _add = Currying(add)
  _add(1)
  _add(2)
  _add(3)()
// > 6
    原文作者:SmartCoder
    原文地址: https://segmentfault.com/a/1190000018585893
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞