高阶函数其实就是一个函数,将另外一个函数做为参数或者(函数)返回值,简单说,就是一个函数操做了另外一个函数;数组
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]
差很少就这么多吧,有什么不到的地方还请你们多指教,😆排序