位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 回调函数

提问人:刘团圆发布时间:2020-11-25

■知识点

把函数作为值传入另一个函数,当传入函数被调用时,就称为回调函数,即异步调用己绑定的函数。例如,事件处理函数、定时器中的回调函数,异步请求中的回调函数、replace^方法中的替换函数、数组迭代中的回调函数(sort、map、forEach、filter、some、every、reduce 和 reduceRight 等)都是回调函数的不同应用形式。这些回调函数将结合各章具体的知识点进行介绍,这里不再赘述。下面仅举两个示例,演示回调函数的应用。

■实例设计

【示例1】下面的代码根据日期对对象进行排序。

//声明3个对象,每个对象都有属性id和date 

var a = { id:1, date:new Date(2019,3,12)}, 

b = { id:2, date:new Date(2019,1,14) }, 

c = { id:3, date:new Date(2019,2,26)};

var arr = [a, b, c];                    //存入 arr 数组中

arr.sort(function(x,y){

    return x.date-y.date;

});                                        //按日期进行排序

for (var i=0; Karr, length; i++) {

    console.log(arr[i].id + " " + arr[i].date.toLocaleString());

}

输出结果:

2 2019年2月14日0:00:00

3 2019年3月26日0:00:00 

1 2019年4月12日0:00:00

在数组排序的时候,会迭代数组中每个元素,并逐一调用回调函数:flinction(x,y)丨return x.date-y.date;}。 


【示例2】在第20章中曾经介绍过数组的map()方法,实际上很多函数式编程语言均有此函数。 它的语法形式为:map(array, func),map表达式将flinc函数作用于array的每一个元素,并返回一个新的 array。下面使用JavaScript实现map(array, func)表达式运算。

function map(array, func){ 

    var res =[]; 

    for(var i in array) {

        res.push(func(array[i]));

    }

    return res;

}

console.log( map([1, 3, 5, 7, 8], function(n){     //返回元素值平方

    return n*n;

}));                                                                 //1,9,25, 49, 64

console.log ( map ( ["one", "two", "three", "four"] , function (item) {//返回首字母大写

    return item[0].toUpperCase() + item.slice(1).toLowerCase();

}));                                                        //One,Two,Three,Four

    两次调用map得到了截然不同的结果,因为map的参数本身己经进行了一次抽象,map函数做的是第2次抽象,高阶的“阶”可以理解为抽象的层次。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部