高階函數其實就是一個函數,將另外一個函數做爲參數或者(函數)返回值,簡單說,就是一個函數操做了另外一個函數;數組
function a(n){ return function b(m){return m>n} } var funA = a(10); console.log(funA(8)); //false
你沒看錯這是一個閉包,也是一個高階函數,在函數a中將函數b做爲返回值; 下面咱們來看一下JavaScript固有的高階函數:閉包
[1,2,5,6,7,8,9].reduce(function(a,b){ return a+b; }); //38 (返回數組之和) [1,2,5,6,7,8,9].reduce(function(a,b){ if(a>b){ return a; }else{ return b; } }); //9 (返回最大值)
經過這兩個例子,能夠看出reduce是對數組的一個累計計算的操做;能夠舉個例子: var list= [1,2,5,6,7,8,9]; 對數組求和: 首先咱們能夠設定一個變量,讓他依次和數組中的每一個元素累加,最後得出這個變量的值就是數組的和,ok,show me the code: function sum(list,result){ for(var i=0;i<list.length;i++){ result +=list[i]; } return result; } console.log(sum(list,0)); //38函數
[1,2,5,6,7,8,9].map(function(a){ return a+6; }); // [7, 8, 11, 12, 13, 14, 15] (返回的新數組)
多說一句,通過試驗,map函數接收三個參數,array.map(fun(item,i,curList){ //item 爲當前數據; //i 爲索引值(0開頭); //curList 爲數組,即array; })code
[1,2,5,6,7,8,9].map(function(item,i,curList){ console.log(item,i,curList); });
[7, 64, 131, 1, 3, 14, 5].sort(function(a,b){ return a-b; //按升序排列數組 //return b-a; //按降序排列數組 }) //[1, 3, 5, 7, 14, 64, 131] (執行結果) // [131, 64, 14, 7, 5, 3, 1] (按降序排列執行的結果)
[1, 3, 5, 7, 14, 64, 131] .reverse(); //[131, 64, 14, 7, 5, 3, 1]
差很少就這麼多吧,有什麼不到的地方還請你們多指教,😆排序