js裡常用函數之高階函數

來源:互聯網
上載者:User

標籤:一個   builds   常用函數   func   asc   class   不同   ascii   調用   

高階函數:將函數作為參數或者傳回值的函數。將函數作為參數的用法通常稱作回呼函數,函數參數通常會在主函數被執行之後被高階函數調用。

高階函數的使用執行個體。可以把有相似操作的函數用一個高階函數來重構,精簡代碼

如有一個比較函數:compareNumbers

 1 function compareNumbers(x, y){ 2  3   if(x > y){ 4  5     return -1; 6  7   }else{ 8  9     return 1;10 11   }12 13   return 0;14 15 }16 17 //我們在排序的時候講compareNumbers作為參數傳遞給sort 函數,就可以指定數組的排序方式18 19 [3, 1, 4, 1, 5, 9].sort(compareNumbers);//[1, 1, 3, 4, 5, 9]

當然我們可以直接把compareNumbers替換為一個匿名函數,簡化代碼。

 1 [3, 1, 4, 1, 5, 9].sort(function (x, y) { 2  3   if(x > y){ 4  5     return -1; 6  7   }else{ 8  9     return 1;10 11   }12 13   return 0;14 15 });//[1, 1, 3, 4, 5, 9]

產生26個字母組成的字串

 1 var aIndex = "a".charCodeAt(0);//97 字元a的ascii編碼 2  3 var alphabet = ""; 4  5 for (var i = 0; i < 26; i++){ 6  7   alphablet += String.fromCharCode(aIndex +i); 8  9 }10 11 alphabet;//"abcdefghijklmnopqrstuvwxyz"

產生一個包含數位字串

1 var digits = ‘‘‘;2 3 for (var i = 0; i< 10; i++){4 5   digits += i;6 7 }8 9 digits;//"0123456789"

建立一個隨機的字母字串,長度為8

1 var random = "";2 3 for (var i = 0; i < 8; i++){4 5   random = String.fromCharCode(Math.floor(Math.random() * 26) + aIndex);6 7 }8 9 random;//"bdwvfrtp"


對於上面的三種產生字串的邏輯,基本類似,只是生層規則不一樣,我們就可以把不同產生字串的邏輯抽出,放到一個函數類型的形參裡。

 1 function buildString(n, callback) { 2  3   var result = ""; 4  5   for(var i = 0; i < n; i++) { 6  7     result += callback(i); 8  9   }10 11   return result;12 13 }

現在可以簡化這三個產生字串的方法為:

 1 var alphabet = buildString(26, function(i){ 2  3   return String.fromChar(aIndex + i); 4  5 }); 6  7  8 var digits = buildString(10, function(i){ 9 10   return i;11 12 });13 14 15 var alphabet = buildString(26, function(i){16 17   return String.fromChar(Math.floor(Math.random()*26));18 19 });

 

參考資料:Effective JavaScript

js裡常用函數之高階函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.