純函數

一個函數的返回結果只依賴於它的參數,而且在執行過程裏面沒有反作用,咱們就把這個函數叫作純函數數組

純函數很是「靠譜」,執行一個純函數你不用擔憂它會幹什麼壞事,它不會產生不可預料的行爲,也不會對外部產生影響。函數

函數的返回結果只依賴於它的參數

const a = 1
const foo = (b) => a + b
foo(2) // => 3

函數依賴外部a的值 ,不是純函數。spa

函數執行過程沒有反作用

const counter = { x: 1 }

const foo = (obj, b) => {
  obj.x=2;
  return obj.x + b
}

foo(counter, 2) // => 4
counter.x // => 2

注意:函數內部 修改了  obj.x=2   ,對外部對象 counter產生影響了, 有反作用。不是純函數code

const foo = (b) => {
  const obj = { x: 1 }
  obj.x = 2
  return obj.x + b
}

若是是函數內部本身定義的對象,對外部沒影響 仍是純函數。對象

 

數組slice是純函數 ,不影響原數組  ,d3

splice不是純函數,直接修改原數組了。co

相關文章
相關標籤/搜索