欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談javascript函數(shù)式編程

 更新時間:2015年09月06日 09:50:25   投稿:hebedich  
你是否知道JavaScript其實(shí)也是一個函數(shù)式編程語言呢?本文將教你如何利用JavaScript的函數(shù)式特性。

函數(shù)式編程,屬于編程范式的一種

1 函數(shù)是第一公民,可以返回值,也可以作為其他函數(shù)的參數(shù)

//console是一個函數(shù)
function con(v){
 console.log(v)
}
// execute 也是一個函數(shù)
function execute(fn){
 fn(1)
}
//將con函數(shù)作為參數(shù)傳進(jìn)execute函數(shù)
execute(con) // 1

2 接近自然語言的寫法

  曉池吃完飯然后就去洗澡 可以表現(xiàn)為eat().bathe()

// 吃飯函數(shù)
function eat(eat){
 this.e = eat;
 return this;
}
// 洗澡函數(shù)
function bathe(bathe){
 this.b = bathe;
 return this;
}

var person = eat("曉池在吃飯").bathe("曉池去洗澡了");
console.log(person.e) // 曉池在吃飯
console.log(person.b) // 曉池去洗澡了

 3 函數(shù)式編程的特性

  匿名函數(shù),即沒有名字的函數(shù),在函數(shù)式編程中很常見,有時候我們需要通過它(不復(fù)用的函數(shù))來完成部分功能,下面我們通過定義一個each函數(shù)來了解一下:

// 自定義each函數(shù)
function each(arr,func){
 var length = arr.length;
 for(var i = 0 ;i <length; i++){
  func(i,arr[i])
 }
}
// 執(zhí)行each函數(shù),傳進(jìn)一個匿名函數(shù)作為該函數(shù)的參數(shù)
each([1,2,3],function(i,v){
 console.log('key:' + i + ',value:' +v);
});
//輸出內(nèi)容
//key:0,value:1
//key:1,value:2
//key:2,value:3

 柯里化:柯里化是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)

//定義add函數(shù),并返回一個函數(shù)
function add(num){
 return function(x){
   return num + x;
 }
}
add1 = add(1)
console.log(add1(3)) // 4

高階函數(shù):有函數(shù)作為參數(shù)或函數(shù)內(nèi)部返回一個函數(shù),都可稱該函數(shù)為高階函數(shù) ,以上的each函數(shù)即算是高階函數(shù)的一種。

結(jié)束語

實(shí)際的應(yīng)用中,不會囿于函數(shù)式或者面向?qū)ο?,通常是兩者混合使用,事?shí)上,很多主流的面向?qū)ο笳Z言都在不斷的完善自己,比如加入一些函數(shù)式編程語言的特征等,JavaScript 中,這兩者得到了良好的結(jié)合,代碼不但可以非常簡單,優(yōu)美,而且更易于調(diào)試。

相關(guān)文章

最新評論