国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - setTimeout的使用問題

瀏覽:112日期:2023-04-01 17:53:07

問題描述

http://ife.baidu.com/course/d...在做百度前端學(xué)院的題目,鏈接如上。題目是實現(xiàn)一個二叉樹的遍歷。js代碼如下:

//綁定變量var root=document.getElementById('root');var btn1=document.getElementById('btn1');var btn2=document.getElementById('btn2');var btn3=document.getElementById('btn3');var timer=0;//顯示節(jié)點function showNode(node){ //node.style.backgroundColor = ’red’; alert(timer); setTimeout(function(){node.style.backgroundColor='red'; },timer+=100); setTimeout(function(){node.style.backgroundColor='#ffffff'; },timer+=100);}//先序遍歷function preOrder(node){ if(!(node == null)){showNode(node);preOrder(node.children[0]);preOrder(node.children[1]); }}//使用遞歸方式實現(xiàn)中序遍歷function inOrder(node){ if(!(node == null)){//alert('btn2');inOrder(node.children[0]);//先訪問左子樹showNode(node);//再訪問根節(jié)點inOrder(node.children[1]);//最后訪問右子樹 }}//后序遍歷function postOrder(node){ if(!(node == null)){postOrder(node.children[0]);postOrder(node.children[1]);showNode(node); }}//綁定事件btn1.onclick=function(){ preOrder(root); timer=0;}btn2.onclick=function(){ inOrder(root); timer=0;}btn3.onclick=function(){ postOrder(root); timer=0;}

代碼沒有錯誤,就是不能理解為什么setTimeout中的時間要用timer+=100?為什么不能直接用100呢?百思不得其解。前端小白,求指教!

問題解答

回答1:

這個代碼的意思是遍歷到的節(jié)點先顯示為紅色,再顯示為白色,再下一個節(jié)點繼續(xù)間隔都為0.1秒為什么要+=100,而不是100異步先不論,簡單來說 函數(shù)的執(zhí)行只有一瞬,遍歷已經(jīng)完成可以理解為如果執(zhí)行函數(shù)的時間點為 0s ,那么所有setTimeout(xxx,100)的執(zhí)行之間點在 0.1s后(添加到任務(wù)隊列,真正執(zhí)行的具體時間不一定準(zhǔn)確在0.1s,不過這都不是重點,所以括號里面不需要理解,以后會知道的)意思就是所有的setTimeout()在一瞬間完成(感覺js會什么都不干)

那么 +=100意思就是setTimeout(xxx,100)setTimeout(xxx,200)setTimeout(xxx,300)....... 這些就會每隔0.1s左右執(zhí)行

再占個坑,等會填

回答2:

timer+=100,保留一定的時間間隔,可能是想以明顯效果的方式,讓你看到節(jié)點遍歷的過程。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 佛坪县| 延长县| 贺兰县| 高青县| 洪泽县| 东丽区| 武宣县| 灵寿县| 兴国县| 台州市| 宝鸡市| 临猗县| 栾川县| 香港| 新宾| 靖安县| 北辰区| 大同县| 淅川县| 云龙县| 晋宁县| 松原市| 宜君县| 凤庆县| 沂南县| 什邡市| 五家渠市| 迁西县| 桦川县| 中江县| 正镶白旗| 威宁| 安新县| 延庆县| 金昌市| 盘山县| 吉安市| 定西市| 嵊泗县| 离岛区| 新和县|