高阶函数

高阶函数,是指可以作为参数传递或者可以作为返回值输出的函数

维基百科对于 高阶函数 的定义:

在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:

传参

把函数当作参数传递,最常见的就是回调函数,我们常常在回调函数中存放的是代码中易变的逻辑部分

回调函数

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方法,接受一个函数当作参数,函数里面封装的是对数组进行排序的规则,当然还有一些数组的 mapreduceforEach 方法等等

var arr = [1, 3, 5, 7, 2, 4, 6];
arr.sort(function(a, b) {
  return a - b;
});

返回值

相信大家对函数式编程一定不陌生,至少都耳熟过,,在函数式编程中,将函数当作返回值输出很是常见。