純函數是指一樣的輸入(入參)獲得一樣的輸出(返回結果),不依賴與外部環境,同時也不對外部的環境形成影響,好比不會影響入參的對象。bash
// Pure funs
function square (x){
return x*x;
}
function squareAll(items){
return items.map(square);
}
//Impure funs
function square (x){
//依賴了外部環境
updateXInDatabase(x);
return x*x;
}
function squareAll(items){
for(let i = 0 ; i < items.length ; i ++ ){
// 改變了原來的入參對象
items[i] = square(item[i]);
}
}
複製代碼
對比 | 純函數 | 非純函數 |
---|---|---|
外部依賴 | 僅依賴入參 | 可能依賴全局變量,其餘方法或者條件 |
輸出 | 一樣的輸入,同樣的輸出 | 可能由於不一樣的狀況,獲得結果不一樣 |
對外影響 | 不改變原來的入參和環境內的變量等 | 可能會改變 |