純函數(shù)簡單定義
1.函數(shù)返回的結(jié)果只依賴它的參數(shù)
2.函數(shù)的執(zhí)行不會對該函數(shù)之外的其他對象等造成影響(副作用)
舉例說明1
let a = 1
let fn = (b) => {
return a + b
}
fn(9) // 10
函數(shù)返回的結(jié)果依賴了外部變量a的影響,所以不是純函數(shù)。
let fn = (a, b) => {
return a + b
}
fn(1, 9) // 10
完全依賴傳入的參數(shù),所以是純函數(shù)。
舉例說明2
let arr = [1, 2]
let fn = (a, b) => {
return a + b
}
fn(arr[0], 9)
這還是純函數(shù),改變一下
let arr = [1, 2]
let fn = (a, b) => {
a[0] = 2
return a[0] + b
}
fn(arr, 9)
console.log(arr) // [2, 2]
函數(shù)的執(zhí)行,改變了外部數(shù)組arr的值,產(chǎn)生副作用,所以不是純函數(shù)。
總結(jié)
純函數(shù)在復(fù)雜的代碼中是非常有用的,它的結(jié)果只依賴傳遞的參數(shù),且不會對外部造成任何影響,高可控又復(fù)用。