前言
純函式是指同樣的輸入(入參)得到同樣的輸出(返回結果),不依賴與外部環境,同時也不對外部的環境造成影響,比如不會影響入參的物件。
舉例說明
// 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]);
}
}
複製程式碼
小結
對比 | 純函式 | 非純函式 |
---|---|---|
外部依賴 | 僅依賴入參 | 可能依賴全域性變數,其他方法或者條件 |
輸出 | 同樣的輸入,一樣的輸出 | 可能因為不同的情況,得到結果不同 |
對外影響 | 不改變原來的入參和環境內的變數等 | 可能會改變 |