初识函数式编程(二)

高阶函数

函数当参数,将传入的函数封装,返回封装后的函数,达到更高程度的抽象,

var add = (a,b) => a+b;
var math = (func,arr) => func(arr[0],arr[1]);
math(add,[1,2])

尾调用优化

函数最后一步,调用本身。

//普通递归
function sum(x){
  if(x===1){
    return 1;
  }
  return x+sum(x-1);
}

//尾调用优化
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

你可能感兴趣的:(初识函数式编程(二))