Callback 是什么?
通常是一个由调用者(以参数形式)传递给被调用者的,由被调用者调用的函数。
但是也有例外:比如,xhr.onsuccess = fn; 这里既没有明显的被调用者,也不是通过参数传递的。
所以可以这样描述:回调函数就是一个“你自己不主动调用,而是交给别人调用的函数”。
Callback 很常见
$button.on('click', function(){})
click 后面的 function 就是一个回调,因为「我」没有调用过这个函数,是 jQuery 在用户点击 button 时调用的。
div.addEventListener('click', function(){})
click 后面的 function 也是一个回调,因为「我」没有调用过这个函数,是浏览器在用户点击 button 时调用的。
一般来说,只要参数是一个函数,那么这个函数就是回调。
Callback 有点反直觉
很多初学者不明白 callback 的用法,因为 callback 有一点「反直觉」。
比如说我们用代码做一件事情,分为两步:step1( ) 和 step2( )。
符合人类直觉的代码是:
step1()
step2()
callback 的写法却是这样的:
step1(step2)