美文网首页js css html
柯里化函数的实现

柯里化函数的实现

作者: LcoderQ | 来源:发表于2021-09-14 11:03 被阅读0次

实现函数add的柯里化

function add(x, y, z) {
    // console.log(this)
    return x + y + z
}

定义柯里化函数,接受一个函数作为参数,返回一个可以实现后的柯里化函数

function curring(fn) {
    function curried(...args) {
        // console.log(this)
        if (args.length >= fn.length) {
            return fn.call(this, ...args) //如果不使用call绑定this,那么这里默认绑定的this是window,那么在下方调用的时候如carrAdd.call('call', 1, 2, 3) 就会得到两个不同的this
        } 
        else {
            function curried2(...args2) {
                return curried.apply(this, [...args, ...args2])
            }
            return curried2
        }
    }
    return currid
}

调用函数得到结果

var carrAdd = curring(add)
console.log(carrAdd(10)(20)(30))

执行步骤

  • 柯里化函数传入add函数得到carrAdd
  • 首次执行carrAdd(10)这时进入if else判断走else,并且返回一个新定义的curried2的函数
  • 继续执行carrAdd(10)(20)相当于执行curried2(20),此时形成闭包args类数组为[10],结构赋值再调用重新调用curried(10,20)
  • 如是继续执行

相关文章

  • 手写简单.bind()实现

    手写一个实现柯里化的.bind() 柯里化:《函数柯里化小结》柯里化:前端开发者进阶之函数柯里化Currying ...

  • 函数柯里化

    函数柯里化,实现累加。

  • js柯里化

    柯里化函数的实现hyCurrying

  • 柯里化函数实现

    柯里化函数实现 柯里化函数的实现实质上是一个收集参数的过程, 也许柯里化的内涵及应用场景理解起来比较困难, 但是实...

  • 函数-柯里化

    面试题-- 函数柯里化怎么实现

  • JS模拟实现bind,call,apply

    call apply bind 简单实现 函数柯里化的实现 构造函数的实现 ES6实现 结合实现

  • JavaScript函数柯里化

    概念 函数柯里化是指将一个多参数的函数转化成多个一个参数调用的函数的过程。 实现 柯里化的实现方式很多,如下: 此...

  • Swift | 柯里化实现一个函数指定加数

    柯里化简介 柯里化指的是从一个多参数函数变成一连串单参数函数的变换 函数演示 代码实现 补充 这种方式是柯里化的一...

  • [译]JavaScript中的函数柯里化

    原文 Currying in JS 函数柯里化 函数柯里化以Haskell Brooks Curry命名,柯里化是...

  • JavaScript 柯里化

    简介 柯里化从何而来 柯里化, 即 Currying 的音译。 Currying 是编译原理层面实现多参函数的一个...

网友评论

    本文标题:柯里化函数的实现

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