higher-order function in functional programming (JS)

1 functional programming该怎么理解?

functions就是values,就像String or Numbers那样,可以构造匿名函数,并把函数赋给某个变量 或者 传递给其他函数(higher-order function)

2 higher-order function有什么好处呢?

可以利用small function来compose into large function,比如最常见的是filter 这个作用在array上的function,它可以接受其他的function来作为argument,这个filter function返回的函数值是:filtered version of the array

不使用filter函数:
在这里插入图片描述
使用filter函数:
在这里插入图片描述

3 为什么上面例子中higher-order function的代码更少呢?

并不是因为写的代码少,而是因为这段代码本身的logic本身就更少,这样的写法允许resue functions,使得能够很容易地compose functions。例子中的filter和判断是否为dog类型的function just slop into each other (slop是描述物体或液体在没有控制或限制的情况下发生混乱、溢出或交错的行为)

上面的代码完全等价于下面:可以看出,这使得判断是否为dog的逻辑完全与数据本身进行了解耦,这个逻辑不再依赖于当前特定的这个animals数据本身了;array对象还有一个与filter相反的对应函数reject,可以直接把isDog函数传入,就可以直接得到所有不是Dog类型的动物对象了
在这里插入图片描述
在这里插入图片描述

来自:YT/watch?v=BMUiFMZr7vk&list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84的笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值