compose函数

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
        }
    }
     
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在说compose函数之前,我们先来看一道题目: Your task is to write a higher o...
    cbw100阅读 8,818评论 1 12
  • 有以下需求:创建一个compose函数,返回函数集 functions 组合后的复合函数, 也就是一个函数执行完之...
    _Dot912阅读 15,566评论 3 6
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,711评论 0 5
  • 自从娃娃上了幼儿园,感觉这一周周过得好快呀! 感觉才过了星期二,明天又是周末啦。 入学前的引导工作,感觉很有必要,...
    大白兔真的喜欢萝卜嘛阅读 248评论 0 1
  • 为一本童话如此着迷,好想在我这样的年纪,好像说不来也有点不好意思。可是,我真的迷上了这本童话书,比小狗钱钱1说的理...
    幸运花开随笔阅读 192评论 2 0

友情链接更多精彩内容