美文网首页
compose函数

compose函数

作者: _请输入昵称 | 来源:发表于2018-08-30 11:29 被阅读0次
    var greeting = (firstName, lastName) => 'hello, ' + firstName + ' ' + lastName
    var toUpper = str => str.toUpperCase()
    var fn = compose(toUpper, greeting)
    console.log(fn('jack', 'smith'))
    

    compose接受函数作为参数,从右向左执行,返回类型函数
    fn()全部参数传给最右边的函数,得到结果后传给倒数第二个,依次传递

    compose的实现

    var compose = function(...args) {
        var len = args.length // args函数的个数
        var count = len - 1
        var result
        return function func(...args1) { // func函数的args1参数枚举
            result = args[count].call(this, args1)
            if(count > 0) {
                count --
                 return func.call(null, result) // result 上一个函数的返回结果
            } else {
                  //回复count初始状态
                  count = len -1
                  return result
            }
        }
         
    }
    

    相关文章

      网友评论

          本文标题:compose函数

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