下面是 JS 回调函数的简单示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button style=""onclick="test()"> 点击 </button>
</body>
<script>
function a(callback)
{alert("我是函数 a");
callback();}
function b(){alert("我是回调函数 b");
}
function c(){alert("我是回调函数 c");
}
function test() {a(b)// 此时函数 a 里面的 callback() 指的就是函数 b
a(c)// 此时函数 a 里面的 callback() 指的就是函数 c}
</script>
</html>
回调函数并不是只有 JS 才有,其它很多开发语言都有,百度百科解释也很清楚,我提取了一句话:回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
个人理解:
首先它是一个函数,函数即是我们说的方法,该函数作为另一个函数的参数,当另一个函数需要的时候可以对该函数进行调用从而执行该函数。为什么需要回调函数?我觉得这就是一种代码封装,实现重用。当然你也可以不用,所有代码都写在一个方法里,但当很多个方法中都需要这个功能的时候你就需要写很多次重复的代码,导致代码冗余,函数体臃肿杂乱,所以这里就需要将功能相同的代码封装到一个函数当中。为啥将一个函数作为另一个函数的参数?我直接调用不也可以吗?如下
function d() {alert("我是回调函数 d");
b()}
当然是可以的,但是这个问题跟“为啥定义一个变量,我直接传递一个具体的数据不可以吗?”是一样的,如果你能明白变量、形参、实参存在的意义,那这个问题自然就能明白。