DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 淺談javascript函數式編程
淺談javascript函數式編程
編輯:關於JavaScript     

函數式編程,屬於編程范式的一種

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 中,這兩者得到了良好的結合,代碼不但可以非常簡單,優美,而且更易於調試。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved