高阶函数和函数柯里化

465 阅读1分钟

高阶函数:如果一个函数符合下面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