高阶函数:如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数。
                  1.若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数。
                  2.若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函数。
常见的高阶函数有:Promise、setTimeout、arr.map()等等
函数的柯里化:通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式。 
| 12
 3
 4
 5
 6
 7
 
 | function sum(a){return(b)=>{
 return (c)=>{
 return a+b+c
 }
 }
 }
 
 | 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 
 | class Login extends React.Component{
 
 state = {
 username:'',
 password:''
 }
 
 
 saveFormData = (dataType)=>{
 return (event)=>{
 this.setState({[dataType]:event.target.value})
 }
 }
 
 
 handleSubmit = (event)=>{
 event.preventDefault()
 const {username,password} = this.state
 alert(`你输入的用户名是:${username},你输入的密码是:${password}`)
 }
 render(){
 return(
 <form onSubmit={this.handleSubmit}>
 用户名:<input onChange={this.saveFormData('username')} type="text" name="username"/>
 密码:<input onChange={this.saveFormData('password')} type="password" name="password"/>
 <button>登录</button>
 </form>
 )
 }
 }
 
 ReactDOM.render(<Login/>,document.getElementById('test'))
 
 
 
 
 class Login extends React.Component{
 
 state = {
 username:'',
 password:''
 }
 
 
 saveFormData = (dataType,event)=>{
 this.setState({[dataType]:event.target.value})
 }
 
 
 handleSubmit = (event)=>{
 event.preventDefault()
 const {username,password} = this.state
 alert(`你输入的用户名是:${username},你输入的密码是:${password}`)
 }
 render(){
 return(
 <form onSubmit={this.handleSubmit}>
 用户名:<input onChange={event => this.saveFormData('username',event) } type="text" name="username"/>
 密码:<input onChange={event => this.saveFormData('password',event) } type="password" name="password"/>
 <button>登录</button>
 </form>
 )
 }
 }
 
 ReactDOM.render(<Login/>,document.getElementById('test'))
 
 |