美文网首页
JS柯里化

JS柯里化

作者: vinterx | 来源:发表于2019-04-23 00:00 被阅读0次

柯里化简介

js柯里化(currying)又译为卡瑞化或加里化,是把接受多个参数的函数,变为可接受多次调用的函数,并把每次调用的参数保存最后一次性返回结果,其实主要是运用了闭包和函数递归调用。

示例

    function fn(){
        //  运用闭包存参数
        let _arg = Array.from(arguments)
        return function ffn() {
            //  最后返回
            if(!arguments.length) {
                //  求和
                return _arg.reduce((sum, item) => sum + item)
            } else {
                //  合并参数
                _arg = [].concat.call(_arg, Array.from(arguments))
                //  递归
                // return arguments.callee  //  ES5严格模式弃用
                return ffn
            }
        }
    }

    console.log(fn(1, 2)(2)(3, 5)(4)(5)())  //  22

拓展

    function fn(){
        //  存参数
        let _arg = [...arguments]
                //  千万别使用箭头函数,否则arguments指向包裹函数的arguments
        let ffn = function() {
            //  合并参数
            _arg = [].concat.call(_arg, [...arguments])
            // _args.push(...arguments);
            //  递归
            return ffn
        }

        ffn.toString = function() {
            return _arg.reduce((sum, item) => sum + item)
        }
        return ffn
    }

    console.log(fn(1, 2)(2)(3, 5)(4)(5))    //  22

相关文章

  • js柯里化

    标签: js柯里化 js柯里化 柯里化是什么在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成...

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

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

  • js柯里化

    在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函...

  • Js柯里化

    柯里化:函数接受一些参数,但不立即求值;返回一个匿名函数将参数保存下来;需要求值时将保存的全部参数一起用掉。(保存...

  • JS柯里化

    柯里化,即Currying,可以是函数变得更加灵活。我们可以一次性传入多个参数调用它;也可以只传入一部分参数来调用...

  • JS柯里化

    柯里化简介 js柯里化(currying)又译为卡瑞化或加里化,是把接受多个参数的函数,变为可接受多次调用的函数,...

  • JS柯里化

    前言 柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换...

  • js柯里化

    柯里化函数的实现hyCurrying

  • JS函数式编程之柯里化

    JS函数式编程之柯里化 为什么要了解柯里化 柯里化是函数式编程必须要使用的. 这里我们就先介绍下什么是柯里化, 然...

  • 前端 js 柯里化和反柯里化

    函数柯里化currying的概念最早由俄国数学家Moses Schönfinkel发明,而后由著名的数理逻辑学家H...

网友评论

      本文标题:JS柯里化

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