希望能夠詳細(xì)的講解下clearTimeout(tc) 為什么就能把最后一個(gè)setTimeout給清除?
1 回答

海綿寶寶撒
TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)閖s沒(méi)有塊級(jí)作用域,只有全局作用域和函數(shù)作用域。所以,代碼實(shí)際上是這樣:
function fn1() { var ts, i; for(i = 0; i < 4; i++) { tc = setTimeout(function(i) { console.log(i); clearTimeout(ts); }, 10, i); } }
而且,for循環(huán)先被執(zhí)行完,才開始執(zhí)行定時(shí)器。所以,不存在各個(gè)定時(shí)器使用對(duì)應(yīng)的ts臨時(shí)值的情況,它們使用的都是ts最終的值。也就是:每個(gè)定時(shí)器中ts都指向了原fn1函數(shù)的ts,而此時(shí)ts的值是最后一個(gè)定時(shí)器,也就是第四個(gè)定時(shí)器。因此,在第一個(gè)定時(shí)器執(zhí)行后,第四個(gè)定時(shí)器就被清除了。
- 1 回答
- 0 關(guān)注
- 598 瀏覽
添加回答
舉報(bào)
0/150
提交
取消