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

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

延遲執行函數 setTimeout 前面的var xxx=null是什么作用?

延遲執行函數 setTimeout 前面的var xxx=null是什么作用?

HUX布斯 2018-11-13 14:09:39
第一次發帖見諒..我想做一個效果鼠標在div上停留兩秒后執行一些函數,不超過兩秒不執行;然后網上找了setTimeout這個函數成功解決了,因為一直是自學的所以基礎薄弱,有些不懂的地方求解一共三個問題在代碼中注釋了,萬分感謝!代碼:<script src="jquery.min.js"></script><script>        var timer = null; // 1.此處為什么要在這里聲明timmer=null?        $(function(){            $("#test").hover(            function(){                $(this).html("懸停");                timer=setTimeout(function(){alert("hello")},2000); // 2.為什么不能直接去掉第                //一行的聲明 ,在此處var timer=setTimeout(...)...            },            function(){                if(timer)  // 3.這里的if語句有什么作用?我試著去掉后函數也能完整運行呀                    clearTimeout(timer);                $(this).html("測試");                 });        });       </script></head><body>    <div id="test">        測試    </div></body>
查看完整描述

1 回答

?
繁星點點滴滴

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

  1. setTimeout會返回一個整數id,是計時器編號,提前聲明一個變量自然是存儲編號用了;

  2. 為什么不能在這里聲明?要知道var是函數作用域的,在function里邊聲明的變量一出去就沒了,你叫另一個匿名函數的clearTimeout到哪去找這個變量?

  3. 這里的if主要是嚴謹,在setTimeout成功返回計時器編號(因為初始是null,如果沒返回肯定就false了)的情況下,才會執行clearTimeout(timer)這句,避免前邊執行錯誤時繼續執行錯誤代碼。


查看完整回答
反對 回復 2018-12-08
  • 1 回答
  • 0 關注
  • 593 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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