美文网首页
JS中Currying实现

JS中Currying实现

作者: Tiny_z | 来源:发表于2018-03-08 17:01 被阅读8次

什么是柯里化?

在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术
具体就是:只传递函数的一部分参数来调用它,让它返回一个函数去处理剩下的参数

例子:

function add(a,b){
  return a + b
}
// 一般执行
add(1,2) // 3

// 柯里化之后
var addCurry = curry(add);
addCurry(1)(2);  // 3

下面来实现一个curry函数

function curry(fn){
        function _c(length,args){
          return length === 0 ? 
            fn.apply(null,args) :
            function(x){
            
              return _c(length - 1,args.concat(x))
            }
        }

        return _c(fn.length,[])
      }

      // es6
      const curry = fn => {
        const _c = (length, args) => {
          return length === 0 ? 
            fn(...args) :
            x => _c(length - 1, [...args,x])
        }
        return _c(fn.length,[]);
      }

      function add(a,b,c,d){
          return a + b + c + d;
      }

    var addCurry = curry(add);
    addCurry(1)(2)(3)(4); // 12

上面的curry的实现具体过程就是,首先通过fn.length取得原函数的参数长度,然后不停的判断这个长度,如果长度为0,就执行fn函数,否则长度减一,并把新传入的参数合并到args里面。

相关文章

  • JS中Currying实现

    什么是柯里化? 在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术具体...

  • js中函数柯里化(currying)

    函数柯里化就是创建已经设置单个参数或者多个参数的函数,函数变为接受一个参数,返回一个值, 1,实现 默认下为参数复...

  • js柯里化

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

  • JavaScript 柯里化

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

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

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

  • 谈谈js里的Currying

    第一次听说currying是在一年前的一个群聊里,看过几次文章愣是没搞懂其用途。遂想自己整理一篇文档供日后翻阅。先...

  • 函数柯里化(currying)

    对于函数的柯里化(currying)应该不陌生,简单来说 Currying 技术是一种通过把多个参数填充到函数体中...

  • 一道题看透函数柯里化

    对于函数的柯里化(currying)应该不陌生,简单来说 Currying 技术是一种通过把多个参数填充到函数体中...

  • JS bind/currying 柯里化

    函数扩展bind方法 在ES5开始使用的,也就是ie9一下不支持;函数扩展bind使用如下:function() ...

  • 实现多网页换肤效果

    标签(空格分隔): js 实现网页换肤 1)html中 2)js中 3)调用getDefaultTheme("./...

网友评论

      本文标题:JS中Currying实现

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