JavaScript前端面试组合函数

 更新时间:2022年06月16日 11:30:45   作者:掘金安东尼  
这篇文章主要为大家介绍了JavaScript前端面试组合函数详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

经历过一些列的函数式编程思想的学习总结,一些重要的高阶函数的学习,以及前一段时间关于 RxJS 的学习。

我们再回看一次 —— 组合函数 compose

本瓜越来越觉得,【易读】的代码应该是将声明和调用分开来的。根据不同的流程,用函数组合的方式、也可以说它是管道、或者说是链式调用,将声明的函数组合起来,再等待时机进行调用。

如果没有组合函数 compose,函数连续调用将会是嵌套的:

const multi10 = function(x) { return x * 10; }
const toStr = function(x) { return `${x}`; }
const compute = function(x){ 
    return toStr(multi10(x))
}
compute(8)

fn3(fn2(fn1(fn0(x)))),层层嵌套是很容易看错的;

所以,必须尝试将调用层级扁平化!

compose 应运而生,它大概就会是这样:

const compose = function(f,g) { 
    return function(x) { 
        return f(g(x))
    }
}
let compute = compose(toStr, multi10)
compute(8)

通过使用compose函数我们可以把两个函数组合成一个函数,这让代码从右往左执行,而不是层层计算某个函数的结果作为另一个函数的参数,这样代码也更加直观。

当然,我们不能让 compose 限制于只能处理连续调用两个函数,于是支持任意参数版本的 compose 将是这样的:

function compose(...funs){ 
    return (x) =>funs.reduce((acc, fun) => fun(acc), x) 
}

通过函数组合,我们可以可以声明式地指定函数间的关系,代码的可读性也大大提高,也方便我们后续对代码进行扩展跟重构;

而且在React里面,当我们的高阶组件变多的时候,一个套着一个就很难看,我们就可以通过类似的方式来让我们的高阶组件层级扁平化;

这就是最最原始的 compose,以及它被提出的原始动机~~

以上就是JavaScript前端面试组合函数的详细内容,更多关于JavaScript组合函数的资料请关注脚本之家其它相关文章!

相关文章

  • 带你彻底理解JavaScript中的原型对象

    带你彻底理解JavaScript中的原型对象

    这篇文章主要介绍了带你彻底理解JavaScript中的原型对象,文中有详细的代码介绍,对正在学习js的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-04-04
  • 微信小程序 PHP生成带参数二维码

    微信小程序 PHP生成带参数二维码

    这篇文章主要介绍了微信小程序 PHP生成带参数二维码的相关资料,需要的朋友可以参考下
    2017-02-02
  • 经典的带阴影的可拖动的浮动层

    经典的带阴影的可拖动的浮动层

    经典的带阴影的可拖动的浮动层...
    2006-06-06
  • Google 地图类型详解及示例代码

    Google 地图类型详解及示例代码

    本文主要介绍Google 地图类型,这里整理了Google 地图类型的基本知识资料,并附简单的示例代码便于大家学习参考,希望能帮助有需要的小伙伴
    2016-08-08
  • 用javascript制作qq注册动态页面

    用javascript制作qq注册动态页面

    这篇文章主要介绍了用javascript制作qq注册动态页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-04-04
  • 微信小程序  网络请求API详解

    微信小程序 网络请求API详解

    这篇文章主要介绍了微信小程序 网络请求API详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • 解析Clipboard API剪贴板操作实例

    解析Clipboard API剪贴板操作实例

    这篇文章主要为大家介绍了解析Clipboard API剪贴板操作实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Javascript使用integrity属性进行安全验证

    Javascript使用integrity属性进行安全验证

    这篇文章主要介绍了Javascript使用integrity属性进行安全验证,在html中,script标签可以通过src属性引入一个js文件,引入的js文件可以是本地的,也可以是远程的,下面我们一起来看看文章详细内容
    2021-11-11
  • MutationObserver在页面水印实现起到的作用详解

    MutationObserver在页面水印实现起到的作用详解

    这篇文章主要为大家介绍了MutationObserver在实现页面水印所起到的作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Web Worker线程解决方案electron踩坑记录

    Web Worker线程解决方案electron踩坑记录

    这篇文章主要为大家介绍了Web Worker线程解决方案electron踩坑记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论