初識函數式編程(二)

高階函數

函數當參數,將傳入的函數封裝,返回封裝后的函數,達到更高程度的抽象,

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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 編程思路的概念[補充] 函數式編程思維范疇論基本理論基本概念純函數函數的柯里化函數的組合Point Free聲明式...
    小漠窮秋閱讀 274評論 0 0
  • 1.高階函數 函數當參數,把傳入的函數做一個封裝,然后返回這個封裝函數,達到更高程度的抽象。?? 2.尾調用優...
    藕藕藕汀閱讀 149評論 1 1
  • 現在大公司的編程方式有: 范疇論Category Theory 函數式編程是范疇論的數學分支是一門很復雜的數學,認...
    扶搏森閱讀 1,012評論 0 0
  • 函數式編程不是用函數來編程,旨在將復雜的函數符合成簡單的函數。 1.函數是一等公民。所謂”第一等公民”(first...
    我竟無言以對_1202閱讀 122評論 0 0
  • 什么是函數式編程? 函數式編程(FP)是基于一個簡單又意義深遠的前提的:只用純函數來構建程序。這句話的深層意思是,...
    Tangpj閱讀 1,725評論 0 10