高阶函数:如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数:
- 若A的数,接受的参数是一个函数。那么A函数可以称之为高阶函数
- 若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函数。常见的高阶函数有:Promise、setTimeout、arr.map、bind等等 函数的柯里化:通过函数调用继续返回函数的方式。实现多次接收参数最后统一处理的函数编码形式。
// react中使用
class Login extends React.Component {
constructor(props) {
super(props)
this.state = {
username: '',
password: '',
}
}
render() {
return (
<form onSubmit={this.submit}>
用户名: <input onChange={this.saveData('username')}></input>
密码: <input onChange={this.saveData('password')}></input>
</form>
)
}
saveData = (type) => {
return (event) => this.setState({ [type]: event.target.value}) // 存在闭包,且闭包一直存在。
}
// 普通函数
function add(x, y) {
return x + y
}
// 柯里化后
function newAdd(x) {
return function (y) {
return x + y
}
}
add(1, 2) // 3
newAdd(1)(2) // 3