setTimeout有最小時間間隔(4ms-16ms),因此即使你設(shè)置setTimeout(func,1)也不會在一毫秒之后執(zhí)行攻臀,而是在最小時間間隔之后執(zhí)行董济,比如4毫秒之后泽疆。
setTimeout 0作用:
- 實現(xiàn)javascript的異步;正常情況下javascript都是按照順序執(zhí)行的钦铁。但是我們可能讓該語句后面的語句執(zhí)行完再執(zhí)行本身软舌,這時就可以用到setTimeout延時0ms來實現(xiàn)了。如:
alert(1);
setTimeout("alert(2)", 0);
alert(3);
雖然延時了0ms,但是執(zhí)行順序為:1牛曹,3佛点,2這樣就保證setTimeout里面的語句在某一代碼段中最后執(zhí)行。
- 在事件中黎比,setTimeout 會在其完成當(dāng)前任何延宕事件的事件處理器的執(zhí)行恋脚,以及完成文檔當(dāng)前狀態(tài)更新后腺办,告訴瀏覽器去啟用 setTimeout 內(nèi)注冊的函數(shù)。舉個例子來說這句話的意思糟描,假如當(dāng)某個事件在頁面上建立一個文本框怀喉,并給文本框賦值(完成文檔當(dāng)前狀態(tài)更新),然后將焦點定到文本框船响,并且選中文本框的內(nèi)容(后面部分就需要用到setTimeout 延遲0ms實現(xiàn)躬拢,否則不好實現(xiàn))。