什么是純函數?


大致從兩個方向上進行判斷,

1. 函數的返回結果只依賴於它的參數

2. 執行過程中沒有副作用

對於第一點,下面看一個例子,func1中返回的值只依賴於傳入的參數屬於純函數,而func2中返回的值依賴於外部參數x,是不純的

var x = 1;
function func1(a, b){
    return a + b;
}

function func2(a, b){
    return a + b + x;
}

對於第二點,副作用就是指函數內部使外部環境的產生了可觀察的變化,如下

var count = {price: 10}
function func3(obj, a){
    return obj.price + a
}
func3(count, 5)

function func4(obj, a){
    obj.price = 50
    return obj.price + a
}
func4(count, 5)

在func3中,並未對obj的值進行更改,屬於純函數;在func4中,count的price被改為了50,是不純的

副作用不僅限於此,還包括http請求、調用DOM API更改頁面、發送Ajax請求,甚至console.log也屬於副作用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM