摘要:為什么會(huì)有這么一個(gè)返回值呢,大家都知道執(zhí)行會(huì)被結(jié)束等待,它是靠什么結(jié)束的呢是,大家可能不太相信,可以這樣來嘗試下復(fù)制代碼復(fù)制代碼這樣就可以知道是什么了吧。
談?wù)勎覍?duì)js中timer的認(rèn)識(shí)
setTimeout()的返回值
今天遇到一個(gè)問題,題目如下:
復(fù)制代碼
var len=4; while(len--){ setTimeout(function(){ console.log(len); },0); console.log(len); };
復(fù)制代碼
問:輸出是什么?
我的答案是打印3,2,1,0,-1,-1,-1,-1
過程是先執(zhí)行console.log(len) ,執(zhí)行了4次之后,再執(zhí)行4次 setTimeout
問題很簡單,但是我就想把console.log(len) 去掉,如下:
var len=4; while(len--){ setTimeout(function(){ console.log(len); },0); };
這下會(huì)打印什么?
應(yīng)該是-1,-1,-1,-1對(duì)吧,但是很遺憾,在chrome的控制臺(tái)下顯示的是 15,-1,-1,-1,-1為什么多個(gè)15,我就很好奇的在執(zhí)行了一邊這段代碼,結(jié)果顯示的是19,-1,-1,-1,-1
再執(zhí)行就是23,-1,-1,-1,-1
很有有規(guī)律,這4個(gè)-1前面的數(shù)字是什么?我發(fā)現(xiàn)它是每次循環(huán)的次數(shù),但是剛打開我之前沒有執(zhí)行啊,第一次打印也不能是15啊
秉著知根知底的信念,就去谷歌了一下,發(fā)現(xiàn)這是setTimeout的返回值。為什么會(huì)有這么一個(gè)返回值呢,大家都知道setTimeout執(zhí)行會(huì)被clearTimeout結(jié)束等待,它是靠什么結(jié)束的呢?是ID,
大家可能不太相信,可以這樣來嘗試下:
復(fù)制代碼
var len=4; while(len--){ var time=setTimeout(function(){ console.log(len); },0); }; console.log(time);
復(fù)制代碼
這樣就可以知道time是什么了吧。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/106500.html
摘要:定義和用法方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式。參數(shù)示例回調(diào)函數(shù)時(shí)間參數(shù)參數(shù)參數(shù)結(jié)果返回值返回整型數(shù)值是的唯一標(biāo)識(shí)符可用于取消設(shè)置的函數(shù)。示例結(jié)果取消定時(shí)器即其返回值的作用為作為一個(gè)引用指向 定義和用法 setTimeout()方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式。 參數(shù) 示例:setTimeout(回調(diào)函數(shù),時(shí)間,參數(shù)1,參數(shù)2,...,參數(shù)n) showImg(ht...
摘要:但是提出標(biāo)準(zhǔn),允許腳本創(chuàng)建多個(gè)線程,但是子線程完全受主線程控制。只是將事件插入了任務(wù)隊(duì)列,必須等到當(dāng)前代碼執(zhí)行棧執(zhí)行完,主線程才會(huì)去執(zhí)行它指定的回調(diào)函數(shù)。之后全局上下文進(jìn)入函數(shù)調(diào)用棧。 setTimeout 一、setTimeout 初現(xiàn) 定義:setTimeout() 方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式。 語法: setTimeout(code, millisec...
摘要:函數(shù)的調(diào)用者是異步函數(shù),不會(huì)為回調(diào)函數(shù)指定值。值為表示在全局對(duì)象下執(zhí)行該函數(shù)執(zhí)行方法,返回一個(gè)函數(shù)作為回調(diào)函數(shù),并且將需要向它傳遞的作為參數(shù)。 重要 JavaScript的this是有函數(shù)求值是的調(diào)用者決定的 JavaScript的this是有函數(shù)求值是的調(diào)用者決定的 JavaScript的this是有函數(shù)求值是的調(diào)用者決定的 函數(shù)中的this 函數(shù)中的this在調(diào)用時(shí)才有意義...
摘要:定時(shí)器方法相關(guān)方法有四種。返回值返回值是一個(gè)正整數(shù),表示定時(shí)器的編號(hào)。這個(gè)值可以傳遞給來取消該定時(shí)器。使用方法很簡單只有一個(gè)參數(shù),該參數(shù)為您要取消定時(shí)器的標(biāo)識(shí)符。用法很簡單當(dāng)代碼運(yùn)行到這行的時(shí)候,會(huì)取消所設(shè)置的定時(shí)器。 簡單介紹在JavaScript中定時(shí)器有兩個(gè) setInterval() 與 setTime...
摘要:一個(gè)頁面在瀏覽器顯示出來至少需要個(gè)線程,分別是引擎,渲染,事件觸發(fā)。其中事件觸發(fā)是獨(dú)立于其他個(gè)執(zhí)行的,而和是相互排斥的,也就是說同一個(gè)時(shí)間二者只有一個(gè)在工作。 作為DOM本身十分重要的2個(gè)異步執(zhí)行函數(shù),初學(xué)者感覺這個(gè)很不好理解,我簡單寫一寫我的理解 setTimeout (func, millisec); setInterval(func, millisec); 這兩個(gè)方法在形式看起來...
閱讀 2667·2021-11-22 13:53
閱讀 4222·2021-09-28 09:47
閱讀 953·2021-09-22 15:33
閱讀 920·2020-12-03 17:17
閱讀 3377·2019-08-30 13:13
閱讀 2188·2019-08-29 16:09
閱讀 1246·2019-08-29 12:24
閱讀 2521·2019-08-28 18:14