回调函数
回调函数是:在一个函数中,又调用了一个函数,叫回调函数
例如:
<button id="btn">按钮</button>
<script>
const btn = document.getElementById('btn')
btn.addEventListener('click', () => {
console.log('这是回调函数')
})
</script>
比如这个点击事件,通过函数 addEventListener 定义点击事件,参数是传入的另一个函数,那么这样的函数就称之为回调函数。
还有就是数组常用的 map 方法等等:
const res2 = list.map((item) => {
item.age += 30
return item
})
当出现类似下面这样的业务时候,一个回调函数里面又套了回调函数,请求时就是等这段代码结果产生之后再执行,那么这样回调套回调就会很麻烦了,不利于阅读,开发维护都麻烦
回调地狱就是下面的情况
axios({
method: '',
url: ''
}).then((res) => {
axios({
method: '',
url: ''
}).then((res) => {
axios({
method: '',
url: ''
}).then((res) => {})
})
})
递归调用函数
递归
在函数的内部执行函数本身称为递归,递归的本质是一个循环
。
function f() {
console.log(1)
f() // 递归
}
f() // 没有条件阻止,递归就是一个死循环
// 1
// 1
// ...
使用递归实现递减
设置一个条件。
function minus(n) {
if (n === 0) return // 条件,到 0 退出
console.log(n)
minus(n - 1) // 递归 - 1
}
minus(5)
// 5
// 4
// 3
// 2
// 1