资讯专栏INFORMATION COLUMN

函数式编程(二)

高璐 / 1814人阅读

摘要:高阶函数在函数式语言中,函数是这个语言中的一等公民。高阶函数可以接收函数作为参数,或者返回一个函数结果,或者两者同时具备。下面我们看另一个高阶函数我们通过向函数传递一个常量来创建一个函数,将给任意值加上。只要有引用指向它该函数就会一直存在。

上篇文章介绍了纯函数,相信你已经理解了纯函数的概念。下面我们接着看一段代码

let minimum = 21;

let checkAge = age => age >= minimum

// 纯的
let checkAge = age => {
  let minimum = 21;
  return age >= minimum;
};

纯函数把关键字18硬编码在函数内部,扩展性差,那我们如何解决呢?

let checkAge  =(minimum, age) => age >= minimum

机智如你肯定会想到通过一个参数将通过传参数将minimum传递进去,很好,这样很机智的解决了问题,可是如果情况是这样的呢?

let minimum = x => x * 2;
let checkAge = age => age >= minimum(2)

我们怎么把这段代码改成纯函数,且不是硬编码的呢?
我们可以将一个函数作为参数传递。

高阶函数

在函数式语言中,函数是这个语言中的一等公民。通俗来讲,函数仅仅是另一种值而已,他与村口的"刘能" "赵四"这类js其他数据类型一样,把它们存在数组里,当作参数传递,赋值给变量...等等。

let checkAge =(age, minimum) => age >= minimum(2)

我们的新函数就称为高阶函数(Higher-order Function)。

高阶函数可以接收函数作为参数,或者返回一个函数结果,或者两者同时具备。
下面我们看另一个高阶函数

let makeAdder = x => (y => x + y);
let add10 = makeAdder(10);
add10(10); //20

我们通过向makeAdder函数传递一个常量10来创建一个函数add10,add10将给任意值加上10。
这个makeAdder里面的匿名函数就是我们经常被面试官用来压压惊的大名鼎鼎的闭包,这个行为非常的重要,因为如果没有它,能够返回函数的函数不是很有用。
当一个函数被创建,其整个生命周期中都是可以访问在在其创建时作用域内的所有变量。只要有引用指向它该函数就会一直存在。

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

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

相关文章

  • 函数编程

    摘要:代码组合在函数式编程中,通过将一个个功能单一的纯函数组合起来实现一个复杂的功能,就像乐高拼积木一样,这种称为函数组合代码组合。函数式编程就变成了运用不同的函子,解决实际问题。 高阶函数 满足以下两点的函数: 函数可以作为参数被传递 函数可以作为返回值输出 叫高阶函数,很显然js中的函数满足高阶函数的条件。 函数作为参数: function pow(x) { return x...

    lixiang 评论0 收藏0
  • 【响应编程的思维艺术】 (1)Rxjs专题学习计划

    摘要:由于技术栈的学习,笔者需要在原来函数式编程知识的基础上,学习的使用。笔者在社区发现了一个非常高质量的响应式编程系列教程共篇,从基础概念到实际应用讲解的非常详细,有大量直观的大理石图来辅助理解流的处理,对培养响应式编程的思维方式有很大帮助。 showImg(https://segmentfault.com/img/bVus8n); [TOC] 一. 响应式编程 响应式编程,也称为流式编程...

    lscho 评论0 收藏0
  • SegmentFault 技术周刊 Vol.16 - 浅入浅出 JavaScript 函数编程

    摘要:函数式编程,一看这个词,简直就是学院派的典范。所以这期周刊,我们就重点引入的函数式编程,浅入浅出,一窥函数式编程的思想,可能让你对编程语言的理解更加融会贯通一些。但从根本上来说,函数式编程就是关于如使用通用的可复用函数进行组合编程。 showImg(https://segmentfault.com/img/bVGQuc); 函数式编程(Functional Programming),一...

    csRyan 评论0 收藏0
  • JavaScript函数编程

    摘要:函数式编程二拖延症了好久,第二篇终于写出来了。如果你对熟悉的话应该还记得,是可以调用来集中处理错误的对于函数式编程我们也可以做同样的操作,如果运行正确,那么就返回正确的结果如果错误,就返回一个用于描述错误的结果。 JavaScript函数式编程(二) 拖延症了好久,第二篇终于写出来了。 上一篇在这里:JavaScript函数式编程(一) 上一篇文章里我们提到了纯函数的概念,所谓的纯函数...

    booster 评论0 收藏0
  • JavaScript 函数编程

    摘要:注意是单一参数柯里化是由以逻辑学家命名的,当然编程语言也是源自他的名字,虽然柯里化是由和发明的。辨别类型和它们的含义是一项重要的技能,这项技能可以让你在函数式编程的路上走得更远。 slide 地址 三、可以,这很函数式~ showImg(https://segmentfault.com/img/remote/1460000015978685?w=187&h=160); 3.1.函数是一...

    thursday 评论0 收藏0

发表评论

0条评论

高璐

|高级讲师

TA的文章

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