回调函数是一种被作为参数传递给另一个函数的高级函数。
回调函数会在其他方法函数方法被调用,也可能不会触发调用。
在JavaScript中,经典的回调函数有很多,像Array中的map,forEach,都会传入函数和回调函数,这就是回调函数的用法
用forEach作为例子
const arr = ['apple', 'peer', 'origin'];
arr.forEach(function(value, index) {
console.log(`第${index + 1}个是${value}`);
});
在forEach中,就放入了一个自定义的回调函数
回调函数作为另一个函数的参数,回调函数不会立即执行,只有在满足触发的条件下才会执行。
function canUse(use, callback){
if(use){
callback();
}
}
canUse(true, () => {
console.log('callback be used');
})
在上面的代码中,必须use为true才会触发回调函数。这样的使用,就像ajax请求一样,请求成功是执行success中的回调函数,失败就执行error中的回调函数
自定义的回调函数,可以是普通函数或者是匿名函数
function fn(arg1, arg2, callback) {
var num = arg1 * arg2;
callback(num);
}
fn(10, 20, function(num) {
console.log('num is ' + num);
})
在使用回调函数时,最好判断一下是否为函数,避免出现异常
function getUser(fristName, lastName, callback) {
if (callback && typeof callback === 'function') {
callback(fristName, lastName);
}
}
function sayUser(firstName, lastName) {
console.log(`hello: ${firstName} ${lastName}`);
}
getUser('ma', 'youj', sayUser);