幕布斯6054654
2019-03-27 21:18:57
function a(fn){ console.log(1) fn.call()}function b(fn){ console.log(2) fn.call()}a(()=>{b(()=>{a()})}) 這個(gè)是回調(diào)函數(shù)嗎?為什么不能這樣調(diào)用a(b(a())),如果函數(shù)內(nèi)部沒有調(diào)用函數(shù),不是可以這樣子使用的嗎a(b())
3 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
a(b()) 中 a() 傳入的參數(shù)并不是 b函數(shù), 而是 b函數(shù)運(yùn)行的返回值
如果要將b當(dāng)回調(diào)函數(shù)傳入,應(yīng)該是 a(b)

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
樓上說的很清楚了,我再強(qiáng)調(diào)一下重點(diǎn)
() => { fn() }
是匿名函數(shù)表達(dá)式,將其作為參數(shù)等價(jià)于用這個(gè)匿名函作做參數(shù);fn()
是語句,即執(zhí)行fn
函數(shù)并返回執(zhí)行結(jié)果。如果代碼沒有顯式return
則返回undefined
。將其作為參數(shù)等價(jià)于將fn
執(zhí)行結(jié)果作參數(shù)
你的a
,b
函數(shù)中參數(shù)都是函數(shù),因此不能直接用fn()
,得用函數(shù)包裹起來才可以
添加回答
舉報(bào)
0/150
提交
取消