JS对象类型-函数进阶篇-高阶函数

定义

高阶函数指操作函数的函数。高阶函数需要满足两个条件:函数可以作为参数被传递;函数可以作为返回值输出。

参数传递

日常开发中,把函数作为参数传递是很常见的情况,通常为了分离出容易变化的业务逻辑,会这部分逻辑放到一个函数参数里。

【回调函数】一个常见的场景,在使用ajax请求数据时,通常把一个回调函数作为参数传给ajax请求的方法,目的是待请求完成后方便外部函数操作数据。

var getUserData = function (id, callback){
  $.ajax('http://example.com/getUserData?id='+id, function(data){
	if(typeof callback === 'function'){
	  callback(data)
	}
  })
}

getUserData(100, function(data){
	// todo
})

getUserData(200, function(data){
	// todo
})

【数组排序】数组的sort()方法也是一个高阶函数,它接收一个函数作为参数,方便我们自定义排序规则

// 从小到大排序
[ 1, 3, 2 ].sort( function( a, b ){ 
  return a - b;
})
// [1,2,3]

// 从大到小排序
[ 1, 3, 2 ].sort( function( a, b ){ 
  return b - a;
})
// [3,2,1]

返回值输出

函数执行后返回一个可执行函数,这也意味着函数的运算过程是可持续的。

【示例】mapper()函数执行完成后返回一个新函数,这个新函数将一个数组映射到另一个使用该函数的数组上。

function mapper(fn) {
  return function(arr) {
   return Array.prototype.map.call(arr, fn)
  }
}

var increment = function(num) {
  return num + 1
}

var result = mapper(increment)([1,2,3])
console.log(result) // [2,3,4]
posted @ 2021-09-29 11:06  wmui  阅读(88)  评论(0)    收藏  举报