最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript前端面試組合函數

 更新時間:2022年06月16日 11:30:45   作者:掘金安東尼  
這篇文章主要為大家介紹了JavaScript前端面試組合函數詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

經歷過一些列的函數式編程思想的學習總結,一些重要的高階函數的學習,以及前一段時間關于 RxJS 的學習。

我們再回看一次 —— 組合函數 compose

本瓜越來越覺得,【易讀】的代碼應該是將聲明和調用分開來的。根據不同的流程,用函數組合的方式、也可以說它是管道、或者說是鏈式調用,將聲明的函數組合起來,再等待時機進行調用。

如果沒有組合函數 compose,函數連續(xù)調用將會是嵌套的:

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函數我們可以把兩個函數組合成一個函數,這讓代碼從右往左執(zhí)行,而不是層層計算某個函數的結果作為另一個函數的參數,這樣代碼也更加直觀。

當然,我們不能讓 compose 限制于只能處理連續(xù)調用兩個函數,于是支持任意參數版本的 compose 將是這樣的:

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

通過函數組合,我們可以可以聲明式地指定函數間的關系,代碼的可讀性也大大提高,也方便我們后續(xù)對代碼進行擴展跟重構;

而且在React里面,當我們的高階組件變多的時候,一個套著一個就很難看,我們就可以通過類似的方式來讓我們的高階組件層級扁平化;

這就是最最原始的 compose,以及它被提出的原始動機~~

以上就是JavaScript前端面試組合函數的詳細內容,更多關于JavaScript組合函數的資料請關注腳本之家其它相關文章!

相關文章

  • JavaScript 對象詳細整理總結

    JavaScript 對象詳細整理總結

    這篇文章主要介紹了JavaScript 對象詳細整理總結的相關資料,需要的朋友可以參考下
    2016-09-09
  • 微信小程序 Canvas增強組件實例詳解及源碼分享

    微信小程序 Canvas增強組件實例詳解及源碼分享

    這篇文章主要介紹了微信小程序 Canvas增強組件實例詳解及源碼分享的相關資料,WeZRender是一個微信小程序Canvas增強組件,這里詳細介紹,需要的朋友可以參考下
    2017-01-01
  • 獨立使用umi的核心插件模塊示例詳解

    獨立使用umi的核心插件模塊示例詳解

    這篇文章主要為大家介紹了獨立使用?umi?的核心插件模塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 前端JavaScript之Promise

    前端JavaScript之Promise

    這篇文章主要介紹關于前端JavaScript的Promise,Promise 是異步編程的一種解決方案,下面文章我們就來看看Promise的基本用法及各種方法,需要的朋友可以參考一下,希望對你有所幫助
    2021-10-10
  • 利用js實現簡單開關燈代碼

    利用js實現簡單開關燈代碼

    這篇文章主要分享的是如何利用js實現簡單開關燈代碼,下面文字圍繞js實現簡單開關燈的相關資料展開具體內容,需要的朋友可以參考以下,希望對大家又所幫助
    2021-11-11
  • 前端框架ECharts?dataset對數據可視化的高級管理

    前端框架ECharts?dataset對數據可視化的高級管理

    這篇文章主要為大家介紹了前端框架ECharts?dataset對數據可視化的高級管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Three.js相機Camera控件知識梳理

    Three.js相機Camera控件知識梳理

    這篇文章主要為大家介紹了Three.js相機Camera控件知識梳理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 微信小程序 動畫的簡單實例

    微信小程序 動畫的簡單實例

    這篇文章主要介紹了微信小程序 動畫的簡單實例的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • JavaScript中的設計模式 單例模式

    JavaScript中的設計模式 單例模式

    這篇文章主要給大家介紹的是JavaScript中的單例模式,設計模式代表了最佳的實踐,通常被有經驗的面向對象的軟件開發(fā)人員所采用。設計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案,需要的朋友可以參考一下
    2021-09-09
  • JavaScript?與?TypeScript之間的聯系

    JavaScript?與?TypeScript之間的聯系

    這篇文章主要介紹了?JavaScript?與?TypeScript之間的聯系,JavaScript,也稱為?JS,是一種符合?ECMAScript?規(guī)范的編程語言。這是一個高級別的、通常是即時編譯的、多范式的。TypeScript?是一種強類型、面向對象的編譯語言,更多消息內容,需要的朋友可以參考一下下面文章內容
    2021-11-11

最新評論

宕昌县| 尉犁县| 东丰县| 始兴县| 长兴县| 海门市| 勃利县| 琼结县| 牙克石市| 南川市| 平阳县| 宕昌县| 鲁甸县| 浦江县| 白城市| 高密市| 禹州市| 潮州市| 信宜市| 凭祥市| 邓州市| 元朗区| 炉霍县| 虎林市| 宜州市| 安西县| 青铜峡市| 崇阳县| 饶河县| 长汀县| 福建省| 方城县| 商洛市| 荥经县| 太谷县| 依安县| 衡东县| 滦平县| 梁平县| 东阿县| 玉龙|