高階函數(shù)
函數(shù)當(dāng)參數(shù)镜廉,將傳入的函數(shù)封裝贺喝,返回封裝后的函數(shù)斗幼,達(dá)到更高程度的抽象澎蛛,
var add = (a,b) => a+b;
var math = (func,arr) => func(arr[0],arr[1]);
math(add,[1,2])
尾調(diào)用優(yōu)化
函數(shù)最后一步,調(diào)用本身蜕窿。
//普通遞歸
function sum(x){
if(x===1){
return 1;
}
return x+sum(x-1);
}
//尾調(diào)用優(yōu)化
function sum(x,total){
if(x===1){
return x+total;
}
return sum(x-1,x+total);
}
閉包
function makePowerFn(power){
function powerFn(base){
return Math.pow(case,power);
}
}
var square = makePowerFn(2);
square(3); //9