• js函数柯里化,自定义实现及使用lodash实现函数柯里化


    1、安装lodash

    yarn add lodash
    

    2、使用es5实现函数柯里化

    function add(a, b) {
        return function (c, d) {
            // console.log(a + b + c + d)
            return a + b + c + d
        }
    }
    let num1 = add(1, 1)
    console.log(num1(2, 2))
    console.log(num1(2, 3)) //柯里化实现成功
    

    3、使用es6简化实现函数柯里化

    const es6Add = (a, b) => ((c, d) => (a + b + c + d))
    let num2 = es6Add(2, 2)
    console.log(num2(2, 2))
    console.log(num2(2, 3))
    

    4、使用lodash实现函数柯里化

    function lodashAdd(a, b, c, d) {
        return a + b + c + d
    }
    let curried = _.curry(lodashAdd)    //_.curry的作用就是生成的函数里面传的参数个数全部传就会直接运算,没传完就会返回一个函数接受剩余参数并运算
    let num3 = curried(3, 3)
    console.log(num3(3, 3))
    

    5、lodash.curry模拟实现

    //函数柯里化模拟
    function curry(fn) {
        return function curryFun(...args) {
            if (args.length < fn.length) {
                return function () {
                    return curryFun(...args.concat(Array.from(arguments)))
                }
            }
            return fn(...args)
        }
    }
    function lodashAdd(a, b, c, d) {
        return a + b + c + d
    }
    let curried = curry(lodashAdd)
    let num3 = curried(3, 3)
    console.log(num3(3, 3))

    6、函数柯里化总结:

      1、定义函数first接受部分参数。

      2、first返回一个新的函数second接受剩余的参数,并把运算结果返回。

      3、优点,提高编程的灵活性和执行效率

  • 相关阅读:
    Python并发编程-IO模型-IO多路复用实现SocketServer
    Python并发编程-IO模型-非阻塞IO实现SocketServer
    Python并发编程-协程实现socketserver
    Pytho并发编程-利用协程实现简单爬虫
    Python正则表达式中的re.S
    Python-正则表达式
    django-模板初探
    django-response对象
    django-QueryDict 对象
    django-request对象
  • 原文地址:https://www.cnblogs.com/uimeigui/p/13925059.html
Copyright © 2020-2023  润新知