首頁 > web前端 > js教程 > 淺談javascript函數式程式設計_javascript技巧

淺談javascript函數式程式設計_javascript技巧

WBOY
發布: 2016-05-16 15:40:39
原創
984 人瀏覽過

函數式編程,屬於程式設計範式的一種

1 函數是第一個公民,可以傳回值,也可以作為其他函數的參數

//console是一个函数
function con(v){
 console.log(v)
}
// execute 也是一个函数
function execute(fn){
 fn(1)
}
//将con函数作为参数传进execute函数
execute(con) // 1

登入後複製

2 接近自然語言的寫法

  小池吃完飯然後就去洗澡 可以表現為eat().bathe()

// 吃饭函数
function eat(eat){
 this.e = eat;
 return this;
}
// 洗澡函数
function bathe(bathe){
 this.b = bathe;
 return this;
}

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

登入後複製

 3 函數式程式設計的特性

  匿名函數,也就是沒有名字的函數,在函數式程式設計中很常見,有時候我們需要透過它(不重複使用的函數)來完成部分功能,下面我們透過定義一個each函數來了解:

// 自定义each函数
function each(arr,func){
 var length = arr.length;
 for(var i = 0 ;i <length; i++){
  func(i,arr[i])
 }
}
// 执行each函数,传进一个匿名函数作为该函数的参数
each([1,2,3],function(i,v){
 console.log('key:' + i + ',value:' +v);
});
//输出内容
//key:0,value:1
//key:1,value:2
//key:2,value:3

登入後複製

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

//定义add函数,并返回一个函数
function add(num){
 return function(x){
   return num + x;
 }
}
add1 = add(1)
console.log(add1(3)) // 4

登入後複製

高階函數:有函數作為參數或函數內部傳回一個函數,都可稱該函數為高階函數 ,以上的each函數即算是高階函數的一種。

結束語

實際的應用中,不會囿於函數式或面向對象,通常是兩者混合使用,事實上,許多主流的物件導向語言都在不斷的完善自己,例如加入一些函數式程式語言的特徵等等,JavaScript 中,這兩者得到了良好的結合,程式碼不僅可以非常簡單,優美,而且更容易調試。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板