资讯专栏INFORMATION COLUMN

柯里化简介

songjz / 2796人阅读

摘要:与反柯里化什么是柯里化与反柯里化纯函数函数结果只受传入参数影响,参数一定,结果一定。写法柯里化接受一次性传入多个参数调用的函数,也可以传入部分参数调用,最后使它返回一个单一参数的函数去处理,并且返回。

call与apply反柯里化? 什么是柯里化与反柯里化?
纯函数
函数结果只受传入参数影响,参数一定,结果一定。
高阶函数
一个函数可以接收另一个函数作为参数,这种函数称为高阶函数。

function add (x,y,foo){
  return foo(x) + foo(y)
}
add(1,2,Math.abs) =>3

// es6写法

let add2 = (x,y,foo) => foo(x)+foo(y)
console.log(add2(-1,2,Math.abs)) =>3

柯里化(Currying)
接受一次性传入多个参数调用的函数,也可以传入部分参数调用,最后使它返回一个单一参数的函数去处理,并且返回。其中也可以传入函数作为参数,相当灵活。

let add =(a,b)=>a+b
console.log(add(1,2))
// 正常写法,需要传递两个参数给add
// add(1)=>NAN(缺少一个参数)
let add2 = a=>b=>a+b
console.log(add2(1)(2))
// 柯里化写法,将参数变换成一个,延迟函数参数的传入
// add2(1) => function(b) {return a+ b}

柯里化特点
延迟参数传递,参数复用
代码短小,优雅,函数化,有点不好理解
多重箭头函数与柯里化
ES5

let add = function(x){
  return function(y){
    return x+y
  }
}
console.log(add(2)(4)) =>6

箭头函数

let add = x => y =>x+y
console.log(add(2)(4))

函数作为参数

var add = function(x) {
  return function(y) {
    return x + y;
  }
}
console.log(add(1)(1)); //output 2
var add1 = add(1);
// try to compare this! add1, add1() and add1(1)
console.log(add1(1)); //output 2
var add10 = add(10);
console.log(add10(1)); //output 11

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106181.html

相关文章

  • js 扩展 -- currying 柯里函数

    摘要:里也有柯里化的实现,只是平时没有在意。如果函数柯里化后虽然生搬硬套,不过现实业务也会有类似场景。 柯里化 先解释下什么是 柯里化 在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。 js 里也有柯里化的实现,只是平时没有在意。先把原文简介贴...

    Pocher 评论0 收藏0
  • JavaScript 函数式编程技巧 - 反柯里

    摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。而反柯里化,从字面讲,意义和用法跟函数柯里化相比正好相反,扩大适用范围,创建一个应用范围更广的函数。作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 可以对照另外一篇介绍 JS 柯里化 的文章一起看~ 1. 简介 柯里化,是固定部分参数,返回一个接受剩余参数的函数,也称为部分计算函数,目的是为了缩...

    zhjx922 评论0 收藏0
  • 函数式编程了解一下(上)

    摘要:一直以来没有对函数式编程有一个全面的学习和使用,或者说没有一个深刻的思考。是不是轻松了其实函数式编程主张的就是以抽象的方式创建函数。后面咱们在系统性的学习下函数式编程。 一直以来没有对函数式编程有一个全面的学习和使用,或者说没有一个深刻的思考。最近看到一些博客文章,突然觉得函数式编程还是蛮有意思的。看了些书和文章。这里记载下感悟和收获。 欢迎团队姜某人多多指点@姜少。 由于博客秉持着简...

    int64 评论0 收藏0
  • JavaScript 函数式编程技巧 - 柯里

    摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。在一些函数式编程语言中,会定义一个特殊的占位变量。个人理解不知道对不对延迟执行柯里化的另一个应用场景是延迟执行。不断的柯里化,累积传入的参数,最后执行。作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 这里可以对照另外一篇介绍 JS 反柯里化 的文章一起看~ 1. 简介 柯里化(Currying)...

    edgardeng 评论0 收藏0
  • JS中的柯里

    摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。个人理解不知道对不对延迟执行柯里化的另一个应用场景是延迟执行。不断的柯里化,累积传入的参数,最后执行。 作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 这里可以对照另外一篇介绍 JS 反柯里化 的文章一起看~ 1. 简介 柯里化(Currying),又称部分求值(Partial Evalu...

    Hancock_Xu 评论0 收藏0

发表评论

0条评论

songjz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<