国产黄色免费网站_久久天天做天天爱综合色_精品国产一区久久久_成人黄色激情网站_久久成人在线视频_美女一区二区在线观看_亚洲精品免费一区亚洲精品免费精品一区 _91精品国产综合久久精品麻豆

你不知道的JavaScript:有趣的setTimeout

2018-5-7    高勁

     話不多說,先上代碼

     for(var j=0;j<10;J++){

         setTimeout(function(){console.log(j);},5000)

     }

     看到這三行代碼,你也許會不耐煩道:又要講閉包?要吐槽了好么?別急,讓我們先來思考一下,這段代碼在瀏覽器中的執(zhí)行結(jié)果是什么?

     <!-- more -->

     甲:順序打印0到9?

     乙:這題我見過,打印十個10!

     哪個答案正確?

     執(zhí)行結(jié)果顯示,瀏覽器打印出十個10,貌似乙對了,但是如果你足夠細心,你會發(fā)現(xiàn)幾個問題:為什么會循環(huán)打印十個10,而不是0到9?

     從結(jié)果來看,for循環(huán)執(zhí)行完跳出之后,才開始執(zhí)行setTimeout(所以j才等于10),為什么不是每次迭代都執(zhí)行一次setTimeout呢?

1、為什么會循環(huán)打印十個10?

      許多人習慣用第二個問題中的執(zhí)行結(jié)果來回答這個問題:“for循環(huán)執(zhí)行完畢跳出之后才開始執(zhí)行setTimeout,所以才打印了十個10”。這樣的答案,只能說是既應付了自己,又應付了別人。其實,要解答第一個問題,首先要解答第二個問題。

2、為什么不是每一次迭代都執(zhí)行一次setTimeout?

     大家都知道,JavaScript在ES6出現(xiàn)以前,是沒有塊狀作用域的,這就意味著,在for循環(huán)中用var定義的變量j,其實是屬于全局的,那其實整個全局作用域中只有一個j,每次for循環(huán)都是更新這個j。

       那么現(xiàn)在的關鍵問題在于,為什么整個for循環(huán)會先于setTimeout執(zhí)行,而不是我們正常理解的,一次迭代執(zhí)行一次。這就涉及到了JavaScript的核心特性:單線程。

       JavaScript設計的初衷,是瀏覽器用來與用戶進行交互和DOM操作的,這就決定了它必須是單線程的。設想JavaScript同時有兩個線程,一個線程在DOM節(jié)點內(nèi)添加內(nèi)容,一個線程刪除該節(jié)點,瀏覽器就會出現(xiàn)混亂。所以,為了避免復雜性,從一誕生,JavaScript就是單線程,這已經(jīng)成為了這門語言的核心特征,將來也不會改變。

      單線程就意味著,所有任務需要排隊,前一個任務結(jié)束,才會執(zhí)行下一個任務,如果前一個任務耗時很長,后一個任務就不得不一直等著。

      為了優(yōu)化單線程的性能,JavaScript將任務分成兩種,一種是同步任務(synchronous),另一種是異步任務(asynchronous)。同步任務指的是,在主線程上排隊執(zhí)行的任務,只有前一個任務執(zhí)行完畢,才能執(zhí)行后一個任務;異步任務指的是,不進入主線程,而進入“任務隊列(task queue)”的任務,只用主線程中的同步任務執(zhí)行完畢,異步任務才會進入執(zhí)行隊列執(zhí)行。只要主線程空了,就會去讀取“任務隊列”,這就是JavaScript的運作機制。這個過程會不斷重復。

       而setTimeout就被JavaScript定義為異步任務。每次for循環(huán)的迭代,都將setTimeout中的回調(diào)函數(shù)加入任務隊列等待執(zhí)行。也就是說,只有同步任務中的for循環(huán)完全結(jié)束,主線程中才會去任務列表中找到尚未執(zhí)行的十個setTimeout(十次迭代)回調(diào)函數(shù)并順序執(zhí)行(先進先出)。而此時,j已經(jīng)經(jīng)過循環(huán)結(jié)束變成了10,所以此時主線程執(zhí)行的,是十個一模一樣的打印i的回調(diào)函數(shù),即打印十個10,。至此完美回答了第一和第二個問題,文章開頭的代碼與下面的代碼其實是等價的:

       for(var i=0;i<10;i++){

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

            setTimeout(console.log(i),5000);

}

       小小的一個setTimeout,牽扯出了很多JavaScript的深層次問題,可見JavaScript還有許多地方是值得深入探究的。



日歷

鏈接

個人資料

藍藍設計的小編 http://www.newchinaweekly.com

存檔

国产伪娘ts一区| 亚洲第一av网| 欧美一区二区女人| 精品无码久久久久久国产| 精品国产一区二区三区四区在线观看 | 国产一区二区三区精品在线| 国产免费嫩草影院| 亚洲精品一区二区二区| 亚洲 小说区 图片区 都市| 国产精品视频h| 香港经典三级在线| 欧美大胆的人体xxxx| 天堂久久午夜av| 精品一区亚洲| 国产高清不卡视频| 欧美jizzhd精品欧美满| 97秋霞电影网| 大片免费在线看视频| 91精品一久久香蕉国产线看观看| 成人一区不卡| 国产成人在线观看| 亚洲成人免费视频| 亚洲人精品午夜在线观看| 国产精品成人免费电影| 亚洲激情一区二区三区| 色呦色呦色精品| 免费看一级一片| 人妻与黑人一区二区三区| heyzo在线观看| 亚洲电影观看| 天天做天天爱综合| 久久嫩草精品久久久精品| 日本高清不卡一区| 久久精品国产91精品亚洲 | 欧美日韩国产三级| 国产69精品久久久久99| 视频一区二区在线观看| 国产ts在线观看| 国产一卡二卡三卡| 成人18免费入口| 亚洲成人激情社区| 亚洲精品字幕| 一区二区免费在线| 播播国产欧美激情| 亚洲电影网站| 少妇久久久久久久久久| 99久久精品国产成人一区二区| eeuss影院www在线观看手机| sm捆绑调教国产免费网站在线观看| 青青一区二区三区| 久久久国产精品午夜一区ai换脸| 日韩免费在线观看| 亚洲自拍av在线| 国产成年人视频网站| 日批视频免费观看| 一级毛片免费看| 精品国内亚洲2022精品成人| 国产成人免费网站| 亚洲电影免费观看高清| 国产精品久久久久久久免费大片| 九九热精品国产| 国产色在线视频| 污污网站在线| 精品日韩在线| 亚洲人成影院在线观看| 久久99国产综合精品女同| 国内少妇毛片视频| 国产欧美日韩另类| caoliu在线| 精品女人视频| 国产精品福利一区二区三区| 久久国产精品久久久久久| 日韩精品一区二区免费| 人人草在线观看| www污污在线| 国产91一区| 亚洲自拍偷拍图区| 国产精品1234| 国产麻豆剧传媒精品国产av| 欧美老**bbbb毛片| 国产福利一区二区三区在线播放| 国产一区二区成人久久免费影院| 日韩电影中文字幕在线观看| 吴梦梦av在线| 国产偷人爽久久久久久老妇app| 在线视频你懂| 韩国亚洲精品| 日韩欧美国产电影| 亚洲一卡二卡三卡四卡无卡网站在线看| 免费中文字幕在线观看| 免费看美女隐私的视频| 日韩欧美一区免费| 欧美视频在线播放| 日韩理论片在线观看| 中文字幕亚洲精品在线| 一区二区三区区四区播放视频在线观看 | 草莓视频app18在线视频| gogo人体一区| 午夜精品久久久久久久久久| 91视频婷婷| 久久亚洲成人av| 久草在线网址| 日本在线观看不卡视频| 亚洲欧美日韩区| 国产精品人人妻人人爽人人牛| 少妇精品视频一区二区| 亚洲精品555| 亚洲视频在线一区观看| 91天堂在线观看| 日韩一区二区不卡视频| 一级在线免费观看| 日韩av电影天堂| 久久在线免费视频| 又黄又爽的网站| 爆操妹子视频在线观看| 综合亚洲视频| 亚洲黄色www| 九一精品在线观看| 夜夜操夜夜操| 中文字幕日韩欧美精品高清在线| 欧美tk丨vk视频| 免费无码av片在线观看| 欧美xxxxbb| 国产精品午夜一区二区三区| 精品婷婷伊人一区三区三| 亚洲天堂第一区| 色偷偷精品视频在线播放| 女仆av观看一区| 欧美久久久久久久久| 男人添女人下面高潮视频| 欧美4khd| 亚洲电影在线一区二区三区| 日韩成人在线网站| 亚洲精品无码一区二区| 动漫h在线观看| 国产福利91精品一区二区三区| 欧洲成人在线视频| 青青青国产在线观看| 嫩草影院永久一二三入口| 黄色成人美女网站| 日韩亚洲欧美成人一区| 久久精品免费网站| 二个人看的毛片| 九九视频精品免费| 国产精品久久久久久av下载红粉| 欧美日韩精品区| 亚洲午夜天堂| 日本精品视频一区二区三区| 黄色一级片在线看| 嫩草影院入口一二三免费| 亚洲免费激情| 538国产精品视频一区二区| 国产一级aa大片毛片| 三级中文字幕在线观看| 色94色欧美sute亚洲线路二| 成年人视频在线免费| 含羞草激情视频| 不卡的av电影| 久久综合久久综合这里只有精品| 免费的黄色av| 日韩一区亚洲二区| 欧美成人一区在线| 国产真实乱偷精品视频| 欧美天堂一区| 亚洲国产成人精品电影| 在线免费看黄视频| 美女尤物在线视频| 在线观看视频一区二区| 精品国产鲁一鲁一区二区三区| 视频在线不卡| 1区2区3区国产精品| 国产v片免费观看| 日本18视频网站| 国产网红主播福利一区二区| 自拍偷拍一区二区三区| 18以下岁禁止1000部免费| 久久se这里有精品| 国产在线视频欧美一区二区三区| 欧美怡红院在线| 久久一区精品| 久久一区二区精品| 国产福利资源| 九九**精品视频免费播放| 国产偷国产偷亚洲高清97cao| 欧美娇小极度另类| 国内成人自拍视频| 一本一道久久a久久精品综合| eeuss影院第1页在线| 91理论电影在线观看| 国产精品视频一二三四区| 中文字幕一区二区三区域| 国产精品第五页| 99草草国产熟女视频在线| 北条麻妃在线| 色狠狠av一区二区三区| 在线免费播放av| 免费成人毛片| 久久精品视频va| www夜片内射视频日韩精品成人| 伊人久久大香线蕉综合热线 |