回调函数是将参数传入另一个函数,在另一个函数内部实现调用的函数,本质上被构造出来后是一个函数对象,可以作为函数参数使用。
例如,首先写一个函数:
function text(callback) {
console.log("this is a bug");
callback();
}
再定义一个函数“
fiction log() {
console.log("this is a callback");
}
text(log);
这样的话,既执行了第一个函数,同时也执行了第二个函数。
同时,回调函数也可以根据需求改变传入的回调函数来间接改变主调函数的功能,让程序变得更加灵活
借用一下上面的例子,将第二个函数变为:
function printNumber() {
console.log("123")
}
text(printNumber);
这样得到的结果就会显示第二个函数变了
写一个简单的例子来应用一下回调函数:
定义一个冒泡函数,回调函数用于确定数组是升序还是降序排序
function bubbleSort(array,callback) {
for ( var i = 0 ; i < array.length - 1 ; i++) {
for (var j = 0 ; j < array.length - i - 1 ; j++) {
if ( callback(array[j] , array[ j + 1]) ) {
var tmp = array[j];
array[j] = array[ j + 1];
array[j + 1] = tmp;
}
}
}
}
function ascending(a,b) {
return a > b ;
}
function descending(a,b) {
return a < b;
}
var array = [ 4,5,,5,6,3,2,8,9,5,4,1,4];
bubbleSort(array,ascending);
console.log(array);
bubbleSort(array.descending);
console.log(array);
这样就可以得到升序和降序的排列了