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

為了賬號安全,請及時綁定郵箱和手機立即綁定

多次點擊start開始計時為什么還能停下來?怎么解釋?

<script?type="text/javascript">
??var?num=0;
??var?i;
??function?startCount(){
????document.getElementById('count').value=num;
????num=num+1;
????i=setTimeout("startCount()",1000);
??}
??function?stopCount(){
????clearTimeout(i);
??}
</script>


點擊一次start按鈕,執(zhí)行startCount()函數(shù),變量i被賦值,但我在重復(fù)點擊strat按鈕重復(fù)調(diào)用startCount()函數(shù)時,變量i不應(yīng)該被覆蓋上了新的值了嗎?但為什么我還能進(jìn)行重復(fù)點擊stop按鈕使計數(shù)停下來?

誰能幫忙解釋一下,謝謝。


補充:

詳細(xì)流程是這樣的:

(1)我多次點擊開始按鈕,開啟了很多個setTimeout()函數(shù)進(jìn)行遞歸;

(2)可以看到計數(shù)因為有多個setTimeout()運行,計數(shù)跳動的很快;

(3)我再逐個點擊停止,計數(shù)函數(shù)還是能夠逐個關(guān)閉。

問題是:變量 i 不應(yīng)該是記錄我最后一次點擊開始按鈕所對應(yīng)的setTimeout()函數(shù)的id嗎?之前的全部setTimeout()函數(shù)的id不應(yīng)該是被覆蓋掉了嗎?為什么我還能正常的停止計數(shù)?之前被覆蓋掉的id是怎么找到的?

請指點一下謝謝。

正在回答

3 回答

你每點擊一次都會創(chuàng)建一個新的定時器,但是之前的定時器不會自己取消。

0 回復(fù) 有任何疑惑可以回復(fù)我~

應(yīng)該是有一個計數(shù)器,記錄setTimeout()的次數(shù),即是當(dāng)setTimeout()被調(diào)用時,計數(shù)器的值加一,而調(diào)用setTimeout()這個函數(shù)的返回值正好就是這個計數(shù)器的值

而clearTimeout(i);的作用是將計數(shù)器的值減一,當(dāng)計數(shù)器的值減為0時,就完全清除了setTimeout()

0 回復(fù) 有任何疑惑可以回復(fù)我~

全局變量只有一個值,這邊變了,那邊引用的也就變了

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕少8119580 提問者

還是不太明白,全局變量不是只有一個 i 嗎?我多次點擊了之后一個 i 應(yīng)該還是指向一個setTimeout()函數(shù)ID吧,它是怎么記錄我之前點擊傳進(jìn)來的setTimeout()函數(shù)ID的呢?不應(yīng)該是被覆蓋掉了丟失了嗎?可是結(jié)果是我再多次點擊停止還是能停下來,為什么?
2017-03-05 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

多次點擊start開始計時為什么還能停下來?怎么解釋?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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