亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數的直接調用

函數的直接調用

慕勒小柒 2017-08-06 17:59:39
請問大家為什么不能用btnArr[0].onclick=animate(200);這不是函數直接調用嗎?
查看完整描述

3 回答

已采納
?
騎驢的帥小伙

TA貢獻16條經驗 獲得超7個贊

animate(200);??//因為后面有括號,所以函數調用了

//沒有名字的函數稱為匿名函數,內部代碼不會執行,因為沒調用
function()?{
????//執行代碼??注意??我這只是舉個例子??匿名函數不能這樣直接寫??會報錯的
}

//匿名函數后面跟個括號,會執行內部代碼
function()?{
????//執行代碼??注意??我這只是舉個例子??匿名函數不能這樣直接寫??會報錯的
}();

//然后我們說說事件,事件(onclick)會幫我們調用函數體內部代碼
//匿名函數是被事件調用的,他不會自己執行,他不執行,animate(200)也不會執行
//這么寫的目的,是想通過按鈕的點擊,來控制函數的執行
//而不是btnArr[0].onclick=animate(200);??這樣會直接調用,事件(onclick)綁定就失去了意義
//所以你圖里的代碼是有執行順序的,你再理一理


查看完整回答
1 反對 回復 2017-08-06
?
D調的華麗麗

TA貢獻1條經驗 獲得超1個贊

btnArr[0].onclick = animate(200); ? 如果直接在函數名之后加() ? 函數會直接調用,跟事件類型沒有關系 ? ??btnArr[0].onclick= function(){ animate(200);?} ? 這樣寫 ?綁定單擊事件是個匿名函數(不能直接調用),必須點擊元素才能調用 ??

查看完整回答
1 反對 回復 2017-08-06
?
幾核

TA貢獻5條經驗 獲得超3個贊

小括號除了用來傳參以外,還用立即執行的意思,故平常不傳參的話可寫成btnArr[0].onclick=animate;
如果寫成btnArr[0].onclick=animate();那么,沒等到元素被點擊,就會執行animate函數,所以要傳參時,將函數寫到匿名函數里,避免立即執行。

查看完整回答
1 反對 回復 2017-08-06
  • 3 回答
  • 0 關注
  • 2010 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號