JavaScript:箭头函数(lambda表达式)作为 callback 回调函数

提出问题

有数组如下:

let arr = [1,2,3,10,20,100,500]

定义函数,可以实现过滤功能,比如:

  • 打印出数组中的偶数
  • 打印出大于 3 的值
  • 打印出小于 10 的值

分析

如果按照传统方式定义3个函数:

  • 第一个函数:打印出数组中的偶数
  • 第二个函数:只能打印大于 3 的值
  • 第三个函数:只能打印出小于 10 的值

显然太笨了,如下:

let arr = [1,2,3,10,20,100,500]

function fun1(arr){
    for( let item of arr){
        if(item % 2 == 0){
            console.log(item)
        }
    }
}
fun1(arr)

解决

可以使用回调函数

定义主函数

形参:

  • 参数1:数组
  • 参数2:回调函数,该回调函数是对数组进行的操作

功能:遍历数组,并执行回调函数,将数组的元素传给该回调函数,如果该函数返回 true,表示符合条件,就打印该元素

function fun(arr,callback){
    for( let item of arr){
        let res = callback(item)
        if(res){
            console.log(item)
        }
    }
}

定义回调函数

形参:数组的一个元素

功能:定义过滤规则,即:能被 2 整除就打印,如下:

function callback(e){
    return e % 2 == 0
}

调用函数:

fun(arr , callback)

改写上面回调函数为 箭头函数

调用函数时,传入箭头函数:

fun(arr , (e) => {
    return e % 2 == 0
})

简化上面的箭头函数

调用函数时,传入箭头函数:

fun(arr , (e) => e % 2 == 0 )

总结

箭头函数 作为回调函数,可以 简化 定义过滤规则


原文出处:/show_1GWjJIN1fUm.html