专栏名称: qize
前端交互开发工程师
目录
相关文章推荐
51好读  ›  专栏  ›  qize

我理解的函数柯里化

qize  · 掘金  · 前端  · 2018-01-25 09:11

正文

对于函数柯里化之前就了解过,大概知道是个什么东西。
最近在读Vue源码的时候,看到了 cached 函数的使用,让我觉得这个代码写的挺有意思,于是在 sg 发问,看了 @sunyongjian 回答,于是又绕到了 柯里化 高阶函数上

柯里化定义

维基中有对柯里化的定义 :在计算机科学中,柯里化(英语:Currying),又译为 卡瑞化 加里化 ,是把接受 多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数 ,并且返回接受余下的参数而且返回结果的新函数的技术。

用JavaScript表达定义

着重看 多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数

var foo = function(a) {
    return function (b) {
        return function (c) {
            return a+b+c;
        };
    };
};

使用

foo(1) // f (b) {  return function(c) { return a+b+c } }
foo(1)(2) // f (c) {  return a+b+c }
foo(1)(2)(3)  // 6

其实就是 逐渐消元 的过程。知乎上也有类似的问题,具体见: 如何理解functional programming里的currying与partial application







请到「今天看啥」查看全文