好用的純粹函數
Что такое чистые функции?
- функции не имеют побочных эффектов
- всегда возвращайте одни и те же вещи каждый раз, когда вы вводите один и тот же ввод, поэтому каждый раз, когда вы вызываете эту функцию с одним и тем же вводом, она всегда дает вам один и тот же вывод и ни на что другое не влияет. Он действует точно так же, как математическая функция, например, sum(2, 2) всегда дает вам четыре, он не влияет ни на что другое вне функции.
- 簡單來講就是, 輸入啥, 就得啥, 沒有副作用, 不會影響函數以外的資料.
Пример
const array = [1, 2, 3]
一般的函數, 放入參數後原來的陣列被改變了
addElementToArray(4) // array = [1, 2, 3, 4] 原來的陣列被改變了 function addElementAToArray(element) { array.push(element) console.log(array) }
另一個例子
addElementToArray(array, 4) // array = [1, 2, 3, 4] 同樣改變原來的陣列 function addElementToArray(a, element) { a.push(element) console.log(a) }
純粹函數
addElementToArray(array, 4) // [1, 2, 3, 4] 新的陣列 console.log(array) // [1, 2, 3] 原來的陣列沒變 function addElementToArray(a, element) { return [...a, element] // create an array and add element to it }
純粹函數-範例二
addElementToArray(array, 4) // [1, 2, 3, 4, 0.567123123] console.log(array) // 原陣列沒有改變 function addElementToArray(a, element) { return [...a, element, Math.random()] // 在新陣列加入亂數 }
缺點
- 不能存取資料庫
- 不能存取檔案
因為純粹函數不能改變函數以外資料