理解JavaScript純函數(shù)

函數(shù)式編程中有一個非常重要的概念叫純函數(shù),JavaScript符合函數(shù)式編程的范式,所以也有純函數(shù)的概念;

在react開發(fā)中純函數(shù)是被多次提及的;

比如react中組件就被要求像是一個純函數(shù)(為什么是像,因為還有class組件),redux中有一個reducer的概念,也是要求

必須是一個純函數(shù);

所以掌握純函數(shù)對于理解很多框架的設計是非常有幫助的;

純函數(shù)的維基百科定義:

在程序設計中,若一個函數(shù)符合以下條件,那么這個函數(shù)被稱為純函數(shù):

此函數(shù)在相同的輸入值時,需產(chǎn)生相同的輸出。

函數(shù)的輸出和輸入值以外的其他隱藏信息或狀態(tài)無關,也和由I/O設備產(chǎn)生的外部輸出無關。

該函數(shù)不能有語義上可觀察的函數(shù)副作用,諸如“觸發(fā)事件”,使輸出設備輸出,或更改輸出值以外物件的內(nèi)容等。

當然上面的定義會過于的晦澀,所以我簡單總結(jié)一下:

確定的輸入,一定會產(chǎn)生確定的輸出;

函數(shù)在執(zhí)行過程中,不能產(chǎn)生副作用;

比如說有一個函數(shù)計算傳入?yún)?shù)的和 我們傳10 20 他就永遠返回10+20

但是如果本地有個變量40,函數(shù)內(nèi)部對這個變量做相加,它就是10+20+40 但是如果別的地方把40改為50了 那么再次調(diào)用函數(shù)就是10+20+50,那么就不是一個純函數(shù)?

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

相關閱讀更多精彩內(nèi)容

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