高階函數(shù)
一個函數(shù)可以接收另一個函數(shù)作為參數(shù)闹击,這種函數(shù)稱為高階函數(shù)镶蹋。
// 舉個栗子:
function add (x,y,f){
return f(x) + f(y)
}
add(5,6,Math.abs) =>11
// 接收了函數(shù)f,并且把x,y參數(shù)傳到函數(shù)f中
// es6寫法
let add2 = (x,y,f) => f(x)+f(y)
console.log(add2(-1,5,Math.abs)) =>6
柯里化
把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)的函數(shù)赏半,并且返回(接受余下參數(shù)而且返回結果的)新函數(shù)的技術贺归。
張鑫旭的解釋通俗又好笑,地址點這里
// 舉個栗子
let add =(a,b)=>a+b
console.log(add(1,2))
// 正常寫法断箫,需要傳遞兩個參數(shù)給add
// add(1)=>NAN(缺少一個參數(shù))
let add2 = a=>b=>a+b
console.log(add2(1)(2))
// 柯里化寫法拂酣,將參數(shù)變換成一個,延遲函數(shù)參數(shù)的傳入
// add2(1) => function(b) {return a+ b}
柯里化特點
- 延遲參數(shù)傳遞仲义,參數(shù)復用
- 代碼短小婶熬,優(yōu)雅,函數(shù)化埃撵,有點不好理解
多重箭頭函數(shù)與柯里化
es5寫法
let add = function(x){
return function(y){
return x+y
}
}
console.log(add(2)(4)) =>6
箭頭函數(shù)寫法
let add = x => y =>x+y
console.log(add(2)(4))
第一次看有點懵逼赵颅,看習慣就好了~