慕勒小柒
2017-08-06 17:59:39
請問大家為什么不能用btnArr[0].onclick=animate(200);這不是函數(shù)直接調(diào)用嗎?
3 回答
已采納

騎驢的帥小伙
TA貢獻(xiàn)16條經(jīng)驗(yàn) 獲得超7個贊
animate(200);??//因?yàn)楹竺嬗欣ㄌ?,所以函?shù)調(diào)用了 //沒有名字的函數(shù)稱為匿名函數(shù),內(nèi)部代碼不會執(zhí)行,因?yàn)闆]調(diào)用 function()?{ ????//執(zhí)行代碼??注意??我這只是舉個例子??匿名函數(shù)不能這樣直接寫??會報錯的 } //匿名函數(shù)后面跟個括號,會執(zhí)行內(nèi)部代碼 function()?{ ????//執(zhí)行代碼??注意??我這只是舉個例子??匿名函數(shù)不能這樣直接寫??會報錯的 }(); //然后我們說說事件,事件(onclick)會幫我們調(diào)用函數(shù)體內(nèi)部代碼 //匿名函數(shù)是被事件調(diào)用的,他不會自己執(zhí)行,他不執(zhí)行,animate(200)也不會執(zhí)行 //這么寫的目的,是想通過按鈕的點(diǎn)擊,來控制函數(shù)的執(zhí)行 //而不是btnArr[0].onclick=animate(200);??這樣會直接調(diào)用,事件(onclick)綁定就失去了意義 //所以你圖里的代碼是有執(zhí)行順序的,你再理一理

D調(diào)的華麗麗
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超1個贊
btnArr[0].onclick = animate(200); ? 如果直接在函數(shù)名之后加() ? 函數(shù)會直接調(diào)用,跟事件類型沒有關(guān)系 ? ??btnArr[0].onclick= function(){ animate(200);?} ? 這樣寫 ?綁定單擊事件是個匿名函數(shù)(不能直接調(diào)用),必須點(diǎn)擊元素才能調(diào)用 ??

幾核
TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超3個贊
小括號除了用來傳參以外,還用立即執(zhí)行的意思,故平常不傳參的話可寫成btnArr[0].onclick=animate;
如果寫成btnArr[0].onclick=animate();那么,沒等到元素被點(diǎn)擊,就會執(zhí)行animate函數(shù),所以要傳參時,將函數(shù)寫到匿名函數(shù)里,避免立即執(zhí)行。
添加回答
舉報
0/150
提交
取消