什么是高阶函数?常见的高阶函数有哪些?

terry Javascript 285

高阶函数:就是一个函数的参数是函数,或者返回值是函数,满足其中一个就是高阶函数 

开闭原则:对扩展是开发的,对修改是封闭的。

如果一个函数符合下面2个 规范中任何一个,那该函数就是高阶函数

    1、若a函数,接收的参数是一个函数,那么a就可以称之为高阶函数

    2、若a函数,调用的返回值依然是一个函数,那么a就可以称之为高阶函数。

<script>
        // 这是一个高阶函数,f是传入的函数作为参数。
           function add(x,y,f){
               return f(x)+f(y)
           }
           let num=add(2,-2,Math.abs);
           console.log(num)//4
</script>

常见的高阶函数有:Promise、setTimeout、arr.map()、filter、reduce等等。

//map:一般用于操作数组集合,遍历操作用
   
    function f(x){
        return x*x
    }
    let arr=[1,2,3,4,5];
    let newArr=arr.map(f);
    console.log(newArr);//[1, 4, 9, 16, 25]
 
//reduce:数组元素计算。
//如:这是数组求和,将元素全部加起来,相当于1+2+3+4+5。
let arr=[1,2,3,4,5];
let num=arr.reduce(function(x,y){
    return x+y
})
console.log(num);//15
 
 
//筛选掉空字符串、null、undefined:
//trim()是去掉首尾的空格 
let arr=[1,0,'2','',0,'3',null,undefined,'']
let r=arr.filter(function(s){
    if(s!=null&&s!=undefined){
        if((typeof s=="string"&&s.trim()!='')||(typeof s=='number')){
            return true;
        }else{
            return false;
        }
    }
})
console.log(r);
 
//sort:数组重排序。返回同一个数组对象。根据ascii码进行排序。
//x-y:从小到大
//y-x:从大到小
//重排序的数组还是原来的数组。
 
let arr =[5,23,7,2,4,5,6];
let  newArr1 = arr.sort(function(x,y){
    return x - y;//从小到大
})
console.log(newArr1);//[2, 4, 5, 5, 6, 7, 23]
let  newArr2=arr.sort(function(x,y){
    return y-x;//从大到小
})
console.log(newArr2);// [23, 7, 6, 5, 5, 4, 2]
console.log(arr===newArr1,arr===newArr2);//true true

  • 暂无回复内容