什么是純函數(shù)
- 返回結(jié)果只依賴它的參數(shù)
- 函數(shù)執(zhí)行過程中沒有副作用
什么是返回結(jié)果只依賴參數(shù)呢
var a = 1;
function num(b){ return a+b};
上面的函數(shù)不是純函數(shù)因為它依賴外部變量掘譬,所以它不是純函數(shù)
function num(a, b) {return a + b}
上面的函數(shù)就是純函數(shù)谐岁,因為它的返回值只依賴它的參數(shù)
函數(shù)執(zhí)行過程中沒有副作用
const a = 1;
const foo = (obj, b) => {
return obj.x + b;
}
const counter = {x: 1};
foo(couter, 2);
counter.x // 1
從上面我們可以看出來counter對象中的x屬性并沒有改變,所以這個函數(shù)執(zhí)行沒有產(chǎn)生副作用
const foo = (obj, b){
obj.x = 2;
return obj.x + b;
}
const counter = {x: 1};
foo(counter, 2);
counter.x //2
從上面可以看出這個函數(shù)在執(zhí)行的過程中改變了counter中x的屬性,所以這個函數(shù)不是純函數(shù)
如果在函數(shù)內(nèi)創(chuàng)建的對象然后改變抽碌,這個沒有影響外部的變量旺订,所以這樣就是純函數(shù)