纯函数
- 一类特别的函数: 只要是同样的输入(实参),必定得到同样的输出(返回)
- 必须遵守以下一些约束
1)不得改写参数数据
2)不会产生任何副作用,例如网络请求,输入和输出设备
3)不能调用Date.now()
或者Math.random()
等不纯的方法 redux
的reducer
函数必须是一个纯函数
react中的redux中的reducer纯函数案例如下
import {ADD_PERSON} from '../constant'
//初始化人的列表
const initState = [{id:'001',name:'tom',age:18}]
export default function personReducer(preState=initState,action){
// console.log('personReducer@#@#@#');
const {type,data} = action
switch (type) {
case ADD_PERSON: //若是添加一个人
//preState.unshift(data) //此处不可以这样写,这样会导致preState被改写了,personReducer就不是纯函数了。
return [data,...preState]
default:
return preState
}
}
高阶函数
- 理解: 一类特别的函数
1)情况1: 参数是函数
2)情况2: 返回是函数 - 常见的高阶函数:
1)定时器设置函数
2)数组的forEach()
/map()
/filter()
/reduce()
/find()
/bind()
3)promise
4)react-redux
中的connect
函数 - 作用: 能实现更加动态, 更加可扩展的功能