高阶函数英文叫Higher-order function。那么什么是高阶函数?
在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:
- 接受一个或多个函数作为输入
- 输出一个函数
###高阶函数之把函数当做参数
JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
一个最简单的高阶函数:
x = -2;y =6;f = Math.abs;f(x) + f(y) ==> Math.abs(-2) + Math.abs(6) ==>2+6 ;return 8
sum(-2,6,Math.abs);//8
var arr = [1, 3, 5, 7, 2, 4, 6];
arr.sort(function(a, b) {
return a - b; //从小到大排序,如需从大到小排序,只需return b - a;
});
//排序器
var sortGenerator = function(sortFunc){
return function(args){
var arguments = [].slice.call(args);
return sortFunc(arguments);
}};
//引入快速排序算法
var quickSort = require(‘quickSort.js’);
var quickSorter = sortingGenerator(quickSort);
//应用算法
quickSorter (4, 22, 44, 66, 77);
var ajaxGenerator=function(method){
return function( callback ){
ajax( method, ‘/url’, callback )
}
}
var ajaxGet=ajaxGenerator(‘get’)
ajaxGet(mycallback )
var ajaxPost=ajaxGenerator(‘post’)
ajaxPost(mycallback )
```
以上像不像函数的柯里化,是的它属于高阶函数的降阶。