欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript前端面試組合函數(shù)

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

經(jīng)歷過一些列的函數(shù)式編程思想的學(xué)習(xí)總結(jié),一些重要的高階函數(shù)的學(xué)習(xí),以及前一段時間關(guān)于 RxJS 的學(xué)習(xí)。

我們再回看一次 —— 組合函數(shù) compose

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

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

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)))),層層嵌套是很容易看錯的;

所以,必須嘗試將調(diào)用層級扁平化!

compose 應(yīng)運而生,它大概就會是這樣:

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

通過使用compose函數(shù)我們可以把兩個函數(shù)組合成一個函數(shù),這讓代碼從右往左執(zhí)行,而不是層層計算某個函數(shù)的結(jié)果作為另一個函數(shù)的參數(shù),這樣代碼也更加直觀。

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

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

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

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

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

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

相關(guān)文章

  • 帶你徹底理解JavaScript中的原型對象

    帶你徹底理解JavaScript中的原型對象

    這篇文章主要介紹了帶你徹底理解JavaScript中的原型對象,文中有詳細的代碼介紹,對正在學(xué)習(xí)js的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • 微信小程序 PHP生成帶參數(shù)二維碼

    微信小程序 PHP生成帶參數(shù)二維碼

    這篇文章主要介紹了微信小程序 PHP生成帶參數(shù)二維碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 經(jīng)典的帶陰影的可拖動的浮動層

    經(jīng)典的帶陰影的可拖動的浮動層

    經(jīng)典的帶陰影的可拖動的浮動層...
    2006-06-06
  • Google 地圖類型詳解及示例代碼

    Google 地圖類型詳解及示例代碼

    本文主要介紹Google 地圖類型,這里整理了Google 地圖類型的基本知識資料,并附簡單的示例代碼便于大家學(xué)習(xí)參考,希望能幫助有需要的小伙伴
    2016-08-08
  • 用javascript制作qq注冊動態(tài)頁面

    用javascript制作qq注冊動態(tài)頁面

    這篇文章主要介紹了用javascript制作qq注冊動態(tài)頁面,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-04-04
  • 微信小程序  網(wǎng)絡(luò)請求API詳解

    微信小程序 網(wǎng)絡(luò)請求API詳解

    這篇文章主要介紹了微信小程序 網(wǎng)絡(luò)請求API詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 解析Clipboard?API剪貼板操作實例

    解析Clipboard?API剪貼板操作實例

    這篇文章主要為大家介紹了解析Clipboard?API剪貼板操作實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Javascript使用integrity屬性進行安全驗證

    Javascript使用integrity屬性進行安全驗證

    這篇文章主要介紹了Javascript使用integrity屬性進行安全驗證,在html中,script標(biāo)簽可以通過src屬性引入一個js文件,引入的js文件可以是本地的,也可以是遠程的,下面我們一起來看看文章詳細內(nèi)容
    2021-11-11
  • MutationObserver在頁面水印實現(xiàn)起到的作用詳解

    MutationObserver在頁面水印實現(xiàn)起到的作用詳解

    這篇文章主要為大家介紹了MutationObserver在實現(xiàn)頁面水印所起到的作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Web Worker線程解決方案electron踩坑記錄

    Web Worker線程解決方案electron踩坑記錄

    這篇文章主要為大家介紹了Web Worker線程解決方案electron踩坑記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論