美文网首页
ES6中高阶函数与柯里化

ES6中高阶函数与柯里化

作者: 芒果加奶 | 来源:发表于2018-10-29 16:52 被阅读0次

    高阶函数

    一个函数可以接收另一个函数作为参数,这种函数称为高阶函数。

    // 举个栗子:
    function add (x,y,f){
      return f(x) + f(y)
    }
    add(5,6,Math.abs) =>11
    // 接收了函数f,并且把x,y参数传到函数f中
    // es6写法
    let add2 = (x,y,f) => f(x)+f(y)
    console.log(add2(-1,5,Math.abs)) =>6
    

    柯里化

    把接受多个参数的函数变换成接受一个单一参数的函数,并且返回(接受余下参数而且返回结果的)新函数的技术。
    张鑫旭的解释通俗又好笑,地址点这里

    // 举个栗子
    let add =(a,b)=>a+b
    console.log(add(1,2))
    // 正常写法,需要传递两个参数给add
    // add(1)=>NAN(缺少一个参数)
    let add2 = a=>b=>a+b
    console.log(add2(1)(2))
    // 柯里化写法,将参数变换成一个,延迟函数参数的传入
    // add2(1) => function(b) {return a+ b}
    
    柯里化特点
    • 延迟参数传递,参数复用
    • 代码短小,优雅,函数化,有点不好理解

    多重箭头函数与柯里化

    es5写法

    let add = function(x){
      return function(y){
        return x+y
      }
    }
    console.log(add(2)(4)) =>6
    

    箭头函数写法

    let add = x => y =>x+y
    console.log(add(2)(4))
    

    第一次看有点懵逼,看习惯就好了~

    相关文章

      网友评论

          本文标题:ES6中高阶函数与柯里化

          本文链接:https://www.haomeiwen.com/subject/fhyltqtx.html