高阶函数,是指可以作为参数传递或者可以作为返回值输出的函数
维基百科对于 高阶函数 的定义:
在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:
把函数当作参数传递,最常见的就是回调函数,我们常常在回调函数中存放的是代码中易变的逻辑部分
回调函数
在 JavaScript
的学习和开发过程中,回调函数的使用率可谓尤其高,在 DOM
事件注册事件处理程序,ajax
异步请求等等诸多场景频繁使用回调函数
/**
* [addHandler 处理事件注册兼容]
* @param {[type]} elem [dom元素]
* @param {[type]} type [事件类型]
* @param {[type]} handler [事件处理程序]
*/
function addHandler(elem, type, handler) {
if (document.addEventListener) {
elem.addEventListener(type, handler);
} else if (document.attachEvent) {
elem.attachEvent('on' + type, handler);
} else {
elem['on' + type] = handler;
}
}
function cb(e) {
console.log(e);
}
var div = document.getElementById('myDiv');
addHandler(div, 'click', cb);
又比如Array.prototype.sort
方法,接受一个函数当作参数,函数里面封装的是对数组进行排序的规则,当然还有一些数组的 map
,reduce
,forEach
方法等等
var arr = [1, 3, 5, 7, 2, 4, 6];
arr.sort(function(a, b) {
return a - b;
});
相信大家对函数式编程一定不陌生,至少都耳熟过,,在函数式编程中,将函数当作返回值输出很是常见。