function a(fn){
console.log(1)
fn.call()
}
function b(fn){
console.log(2)
fn.call()
}
a(()=>{b(()=>{a()})})
这个是回调函数吗?为什么不能这样调用a(b(a()))
,如果函数内部没有调用函数,不是可以这样子使用的吗a(b())
function a(fn){
console.log(1)
fn.call()
}
function b(fn){
console.log(2)
fn.call()
}
a(()=>{b(()=>{a()})})
这个是回调函数吗?为什么不能这样调用a(b(a()))
,如果函数内部没有调用函数,不是可以这样子使用的吗a(b())
楼上说的很清楚了,我再强调一下重点
() => { fn() }
是匿名函数表达式,将其作为参数等价于用这个匿名函作做参数;fn()
是语句,即执行fn
函数并返回执行结果。如果代码没有显式return
则返回undefined
。将其作为参数等价于将fn
执行结果作参数
你的a
,b
函数中参数都是函数,因此不能直接用fn()
,得用函数包裹起来才可以
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
a(b()) 中 a() 传入的参数并不是 b函数, 而是 b函数运行的返回值
如果要将b当回调函数传入,应该是 a(b)