一、包含函数参数的函数是高阶函数。
二、返回值是函数的函数是高阶函数。
三、例1:异步请求成功或者失败后调用函数,回调函数
// 参数callback为一个函数
function getUserInfo (userId, callback) {
$.ajax({
type: 'GET',
url: 'http://xxx.com/getUserInfoById?userId=' + userId,
success: function (result) {
if (typeof callback === 'function') {
callback(result)
}
}
})
}
四、数组的sort方法接受的参数也是一个函数。
五 、例2:函数节流
function throttle (fn, interval) {
let _fn = fn
let timer
let isFirstCall = true
return function () {
let args = arguments
let _this = this
if ( isFirstCall ) {
_fn.apply(_this, args)
isFirstCall = false
return false
}
if (timer) {
return false
}
timer = setTimeout(function () {
clearTimeout(timer)
timer = null
_fn.apply(_this, args)
}, interval || 800)
}
}