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