高阶函数
Posted liushisaonian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高阶函数相关的知识,希望对你有一定的参考价值。
1.函数作为参数调用
function f1(fn){ console.log("f1函数"); fn(); } //传入匿名函数 f1(function(){ console.log("aa"); }); //命名函数 function f2(){ console.log("f2函数"); } f1(f2); //定时器的使用 function f3(fn){ setInterval(function(){ console.log("定时器开始"); fn(); console.log("定时器结束"); },1000); } /*f3(function(){ console.log("好困啊,好累啊"); })*/
2.函数作为返回值使用
///函数作为返回值使用 function getFunc(type){ return function(obj){ return Object.prototype.toString.call(obj)==type; } } // var ff=getFunc("[object Array]"); var result=ff([10,20,30]); console.log(result); var ff1 = getFunc("[object Date]"); var dt = new Date(); var result1 = ff1(dt); console.log(result1);
3.函数作为返回值小案例
//排序,每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序 //三部电影,电影有名字,大小,上映时间 function File(name, size, time) { this.name = name;//电影名字 this.size = size;//电影大小 this.time = time;//电影的上映时间 } var f1 = new File("jack.avi", "400M", "1997-12-12"); var f2 = new File("tom.avi", "200M", "2017-12-12"); var f3 = new File("xiaosu.avi", "800M", "2010-12-12"); var arr = [f1, f2, f3]; function fn(attr) { //函数作为返回值 return function getSort(obj1, obj2) { if (obj1[attr] > obj2[attr]) { return 1; } else if (obj1[attr] == obj2[attr]) { return 0; } else { return -1; } } } var ff = fn("name"); //函数作为参数 arr.sort(ff); for (var i = 0; i < arr.length; i++) { console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time); }
以上是关于高阶函数的主要内容,如果未能解决你的问题,请参考以下文章