第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用定時器實現(xiàn)停止頁面所有js的原理

使用定時器實現(xiàn)停止頁面所有js的原理

大話西游666 2019-03-14 18:13:50
最近有一個輪播圖調(diào)試,但是頁面的輪播圖一直在動,鼠標(biāo)選不中css樣式,最后在網(wǎng)上找了這么一段代碼,var id = setInterval(function() {}, 0);while (id--) clearInterval(id);可以停止頁面所有js,但不知道這是為什么,曾經(jīng)用for(;;){}替代過,但瀏覽器會卡死,一直搞不清這個是什么原理但這個就沒事會用,但不知道為什么會有這樣的效果,所有想看看有沒有大神能分析一下
查看完整描述

5 回答

?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

var id = setInterval(function() {}, 0);

創(chuàng)建了一個新的定時器并立刻執(zhí)行,setInterval返回值為一個整數(shù),是這個定時器的唯一ID,利用了
setInterval 和 setTimeout 的返回值一定是遞增的整數(shù)這一特性,所以獲得到的ID的值一定大于之前設(shè)置的所有定時器的值。

while (id--) clearInterval(id);

逐個語句來看

while(id--){//1
    clearInterval(id);//2
    }

1: 將ID減一并返回給while,這里利用了while的判斷條件,如果條件是一個大于0的樹,則認(rèn)為是true,當(dāng)條件為0,則認(rèn)為是false,所以此處不會死循環(huán),因為當(dāng)id為0時,會跳出循環(huán),而 for(;;){} 不會。
2: clearInterval(id),將現(xiàn)在的ID所對應(yīng)的那個定時器清除,clearInterval 語句也可以清除 setTimeout 設(shè)置的定時器,clearInterval和clearTimeout是等效的(來源一),而且因為前文提到的 setInterval 和 setTimeout 的返回值一定是遞增的整數(shù), 所以通過這個循環(huán)可以遍歷所有一定被設(shè)定好的定時器并全部清除。
PS:雖然是遞增的但不一定是連續(xù)的整數(shù),clearInterval的入?yún)⑷绻粚?yīng)這么一個定時器也不會報錯(來源二)。
參考:
來源一: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()


查看完整回答
反對 回復(fù) 2019-03-16
?
Cats萌萌

TA貢獻1805條經(jīng)驗 獲得超9個贊

這段代碼先創(chuàng)建一個定時器并獲取這個定時器的ID,然后遞減這個ID并結(jié)束ID對應(yīng)的定時器,實際上是利用了定時器的ID會從小到大遞增分配的特點,實際上并不是每次迭代都有對應(yīng)的定時器存在

至于你那個for循環(huán)不是死循環(huán)么...


查看完整回答
反對 回復(fù) 2019-03-16
?
慕蓋茨4494581

TA貢獻1850條經(jīng)驗 獲得超11個贊

這段代碼是關(guān)閉所有的setInterval

每次setInterval的時候都會返回一個自增數(shù)字,可以理解為定時器的id


var id = setInterval(function() {}, 0);//創(chuàng)建一個定時器拿到最后一個定時器的id

while (id--) clearInterval(id);//拿到最后一個id然后遞減 就關(guān)閉所有的了


查看完整回答
反對 回復(fù) 2019-03-16
?
忽然笑

TA貢獻1806條經(jīng)驗 獲得超5個贊

既然是輪播圖,原生的話肯定有定時器在執(zhí)行,找到那個定時clear掉輪播圖不就不動了

如果是用的輪播圖插件,肯定會提供不自動輪播的選項,或者提供手動停止的api。

靠阻塞不太靠譜


查看完整回答
反對 回復(fù) 2019-03-16
  • 5 回答
  • 0 關(guān)注
  • 2038 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號