“純函數”這個概念個人覺得適用與所有的語言。
什么是純函數,純函數有兩個重要的標準,違反任何一個都不是純函數;
1、函數的返回結果只依賴于它傳入的參數。
2、函數執行過程里面沒有副作用。
例如:
const fun = (a, b) => a + b;
返回就是a加b的和,符合以上兩個標準,返回結果永遠是可預料的,程序運行中不會有副作用
再例如:
const obj = {};
const fun = (obj,b) =>{
obj._age = 18;
return obj._age +b;
}
這個雖然返回永遠是18+b,但是有副作用,修改或者新增了obj這個對象的_age屬性值,有無法預估的影響。
總結:
1、純函數很嚴格,也就是說你幾乎除了計算數據以外什么都不能干,計算的時候還不能依賴除了函數參數以外的數據。
2、一個函數的返回結果只依賴于它的參數,并且在執行過程里面沒有副作用,我們就把這個函數叫做純函數。