最近有一個(gè)輪播圖調(diào)試,但是頁面的輪播圖一直在動(dòng),鼠標(biāo)選不中css樣式,最后在網(wǎng)上找了這么一段代碼,
var id = setInterval(function() {}, 0);
while (id--) clearInterval(id);
可以停止頁面所有js,
但不知道這是為什么,曾經(jīng)用
for(;;){}
替代過,但瀏覽器會卡死,一直搞不清這個(gè)是什么原理
但這個(gè)就沒事
會用,但不知道為什么會有這樣的效果,
所有想看看有沒有大神能分析一下
for(;;){}等同于while,會同步阻塞執(zhí)行。
setInterval(function() {}, 0)或者setTimeout(function() {}, 0),它會“盡快”執(zhí)行,并不會阻塞當(dāng)前代碼的執(zhí)行。
關(guān)鍵詞:javascript 單線程
相關(guān)文章:
http://caibaojian.com/setinte...
http://www.codeceo.com/articl...
var id = setInterval(function() {}, 0);
創(chuàng)建了一個(gè)新的定時(shí)器并立刻執(zhí)行,setInterval返回值為一個(gè)整數(shù),是這個(gè)定時(shí)器的唯一ID,利用了
setInterval 和 setTimeout 的返回值一定是遞增的整數(shù)這一特性,所以獲得到的ID的值一定大于之前設(shè)置的所有定時(shí)器的值。
while (id--) clearInterval(id);
逐個(gè)語句來看
while(id--){//1
clearInterval(id);//2
}
1: 將ID減一并返回給while,這里利用了while的判斷條件,如果條件是一個(gè)大于0的樹,則認(rèn)為是true,當(dāng)條件為0,則認(rèn)為是false,所以此處不會死循環(huán),因?yàn)楫?dāng)id為0時(shí),會跳出循環(huán),而 for(;;){} 不會。
2: clearInterval(id),將現(xiàn)在的ID所對應(yīng)的那個(gè)定時(shí)器清除,clearInterval 語句也可以清除 setTimeout 設(shè)置的定時(shí)器,clearInterval和clearTimeout是等效的(來源一),而且因?yàn)榍拔奶岬降?setInterval 和 setTimeout 的返回值一定是遞增的整數(shù), 所以通過這個(gè)循環(huán)可以遍歷所有一定被設(shè)定好的定時(shí)器并全部清除。
PS:雖然是遞增的但不是連續(xù)的整數(shù),clearInterval的入?yún)⑷绻粚?yīng)這么一個(gè)定時(shí)器也不會報(bào)錯(cuò)(來源二)。
參考:
來源一:which means you can technically use clearTimeout() and clearInterval() interchangeably——出自MDN-WindowTimers.clearTimeout()
來源二:Passing an invalid ID to clearTimeout() silently does nothing; no exception is thrown.——出自MDN-WindowTimers.clearTimeout()
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。