回调函数

158 阅读2分钟

函数三要素

  1. 功能
  2. 参数
  3. 返回值

那么参数里面传:对象、数组、字符串那么可以传入参数吗?

当然是可以的,这就是回调函数的用法!!!!

let sum = (a, b) => {
    return a + b
}

回调函数的概念:

函数被当参数传递进去参与使用

let back = (callback, a, b) => {
    console.log('求和结果是:', callback(a, b));
}
back(sum, 1, 2)

在JavaScript函数作为参数专门名称就是callback,callback在函数里面出现就代表着参数的意思

回调函数有两种类型:

同步回调函数:

同步回调函数就是调用马上使用的,常见的有:

let arr = [1, 3, 5, 4, 5]

1、forEach (遍历数组)

arr.forEach((value, index) => {
    console.log(value, index);
})

forEach里面就要传入一个函数,函数里面有两个参数。第一个参数(value)就是数组里面下标对应的值 第二个参数(index)就是数组里面下标。

2、 filter 过滤数组,筛选数组

let wow = arr.filter(value) => {
    return value % 2 != 0
})
console.log(wow);

filter里面就要传入一个函数,函数里面有两个参数。第一个参数(value)就是数组里面下标对应的值 3、reduce :求和数组里面的值

let wow =arr.reduce((total, value) => {
    return total += value
}, 0)
console.log(wow);

reduce里面就要传入一个函数,函数里面有两个参数。第一个参数(total)就是数组所以值加起来的结果,{}后面加的0就是 total 的初始值 ,第二个参数(value)就是数组里面下标对应的值

异步回调函数:

满足满足条件才可以触发的函数,常见的有:

1、addEventListener 事件监听系列

document.body.addEventListener('click',function(){
    console.log(111);
})

addEventListener是满足函数前面传入参数条件,比如说click(点击)才可以触发的,这里是点击一次toby就会打印一次111 2、setInterval (定时器)、setTimeout(延时器)

setTimeout(() => {
    console.log('你好吗?');
}, 3000)

setTimeout(() => {
    console.log('你还好吗?');
}, 3000)

setInterval (定时器)、setTimeout(延时器) 都是到了时间触发的函数

3、使用axios发起请求

 axios({
        url: url,
        method: method,
        params: params
}).then(res => {
     console.log(res);
}

使用axios发起请求之后回来的参数,就是用回调函数接收的。 还有很多回调函数我暂时没有想到,回调函数的概念:函数被当参数传递进去参与使用。这么简单,但是回调函数的出现可以让我们的代码设计的更加巧妙,这里为什么需要回调函数呢?

我打一个比如就是华为手机产品发布时候,我们点击了预购了。给了钱,这个就好像是 axios发起了请求。那么把我们要的手机、型号,价格都给了华为。手机做好了之后就会通过快递给我们,这个快递员就是回调函数在的事情。带回来的手机(就是我们需要的参数),这个参数怎么使用取决于我们有什么需求了