JS純函數(shù)概念

判斷是否為純函數(shù)的兩個(gè)指標(biāo)

1、函數(shù)的返回結(jié)果只依賴于它的參數(shù)。
2、不改變函數(shù)體外部數(shù)據(jù)、函數(shù)執(zhí)行過程里面沒有副作用。


純函數(shù)和非純函數(shù)的簡(jiǎn)單例子

1、純函數(shù)

以下是一個(gè)計(jì)算產(chǎn)品稅后價(jià)格(英國稅率是20%)的純函數(shù)的例子:
function priceAfterTax(productPrice) { 
      return (productPrice * 0.20) + productPrice;
}
它符合我們所說的兩條純函數(shù)的定義。不依賴于任何外部輸入,不改變?nèi)魏瓮獠繑?shù)據(jù)、沒有副作用。

2、非純函數(shù)

var tax = 20; 
function calculateTax(productPrice) { 
    return (productPrice * (tax/100)) + productPrice; 
}
其中函數(shù)的計(jì)算結(jié)果取決于外部 tax 變量,而純函數(shù)不能依賴外部變量。
它沒有滿足定義中的第一個(gè)要求,因此這個(gè)函數(shù)是不純的。


Redux中對(duì)使用純函數(shù)reducer的要求

只需要謹(jǐn)記 reducer 一定要保持純凈。
只要傳入?yún)?shù)相同,返回計(jì)算得到的下一個(gè) state 就一定相同。
沒有特殊情況、沒有副作用,沒有 API 請(qǐng)求、沒有變量修改,單純執(zhí)行計(jì)算。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容