纯函数特征
只要是同样的输入(实参),必定得到同样的输出(返回)
约束条件
- 不得改写参数数据;
- 不会产生任何副作用,例如网络请求、输入和输出设备等;
- 不能调用Date.now() 或者 Math.random()等不纯的方法;
举例
redux 的 reducer 函数必须是一个纯函数。
纯函数:
function test(x) {
return 1;
}
非纯函数:
function test1() {
return new Date();
}
function test2(x) {
return Math.random() + x;
}
// 不能修改参数
function test3(arr) {
arr.unshift(10);
return arr;
}