回调函数
function add(num1, num2, callback){
var sum = num1 + num2;
if (typeof callback === 'function') { //确认这是一个函数
callback(sum);
}
}
function print(num){
console.log(num);
}
add(1, 2, print); //=>3
回调函数不会立即执行,需要通过()运算符才会执行。
回调函数是一个闭包,能访问到其外层的变量。
一个函数中可以传递多个回调函数
回调函数可以使用在以下场景:
- 异步编程。
- 事件监听、处理。
- setTimeout、setInterval方法。
- 通用功能,简化逻辑。
异步编程
Javascript语言的执行环境是"单线程"。
浏览器经常无响应往往就是因为某段JS代码长时间运行而阻塞了后面的代码运行,导致页面卡在一个地方,不能执行别的操作。
这是一般情况的“同步模式”。为了解决这个问题,就可以使用异步编程。其中最基础的方法就是回调函数。
function print(name, callback) {
setTimeout(() => {
console.log(name)
if (callback) {
callback()
}
}, 1000)
}
print('a', function () {
print('b')
})