美文网首页
loadsh flow用法及源码

loadsh flow用法及源码

作者: 前端_高手 | 来源:发表于2020-09-11 11:15 被阅读0次

    用法

    function square(n) {
      return n * n;
    }
    function add(m, n) {
        return m+n;
    }
    
    var addSquare = _.flow(add, square);
    addSquare(3, 2);
    // => 25
    

    如上代码,addSquare(3, 2);会依次执行flow中传入的函数,其中square的参数是add返回的结果;

    源码

    function flow(...funcs) {
       let len = funcs.length;
       let index = len;
       while(index--) {
           if (typeof funcs[index] !== 'function') {
               throw new TypeError('不是一个函数');
           }
       }
       return function(...args) {
           let index = 0;
           let result = len ? funcs[index].apply(this, args): args[0];
           while (++index < len) {
                   result = funcs[index].call(this, result)
               }
           return result;
       }
    }
    

    使用apply、call的原因解释,匿名函数中的this指向window,如果没有apply,直接 funcsindex,则add函数的this是funcs数组,显然这个数组对象没有add和square方法,因此会报错

    相关文章

      网友评论

          本文标题:loadsh flow用法及源码

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