回调函数的概念
就是自己定义一个函数,然后再调用。从而实现这个函数的程序内容,然后把这个函数作为另一个函数的参数传入。js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。
- 回调函数的解释
因为函数实际上是一种对象,它可以存储在变量中,通过参数传递给另一个函数,在函数内部创建,从函数中返回结果值”,因为函数是内置对象,我们可以将它作为参数传递给另一个函数,到函数中执行,甚至执行后将它返回,它一直被看作是一种难懂的技术。
如:普通的冒泡排序算法,是把数组从小到大或(从大到小)进行排序。这时候我们一个页面既要用从大到小排序,又要从小到大排序。这时候还得封装两套排序的代码来供我们使用,这样很占空间,代码重复的地方也很多。这时候就可以用回调函数来很好的解决这个问题。
代码展示:
// 正常版本的冒泡排序,把数组从小到大排序
function BubbleSort(arr,compare) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if(arr[j]>arr[j+1]){
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
function BubbleSort(arr,compare) {//这个compare就是传进来的回调函数
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
//arr[j]>arr[j+1] 等价于 arr[j]-arr[j+1]>0
if(compare(arr[j],arr[j+1])>0){
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
function min(a,b){
return a-b;
}
function max(a,b){
return b-a;
}
function fn() {
var arr = [5,4,3,2,1];
BubbleSort(arr,max);
console.log(arr);
}