2019-02-18
回答
纯函数是一个满足以下两个条件的函数:
- 给定相同的输入,返回输出结果必须相同
- 在作用域之外不能改变其他数据或提供给函数的数据。
纯函数在满足以上两个条件时,允许在自身内部对自己的变量进行改变。
纯函数
const a = (x, y) => x + y
const b = (arr, value) => arr.concat(value)
const c = arr => [...arr].sort((a, b) => a - b)
非纯函数
const a = (x, y) => x + y + Math.random()
const b = (arr, value) => (arr.push(value), arr)
const c = arr => arr.sort((a, b) => a - b)
加分回答
- 由于纯函数的可靠性,使他更加容易被理解。
- 所有函数都应该是纯函数,除非需要他产生一些副作用,如:
setInnerHTML
- 如果一个函数没有返回值,即可以说明他产生了副作用。
- 对比 Mutable 和 Immutable 及 Mutating 和 Non-Mutating