日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

深入理解JavaScript定时函数setTimeout

發布時間:2025/4/9 javascript 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解JavaScript定时函数setTimeout 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以一段javascipt代碼為例分析說明

1 function test() { 2 var a = 0; 3 a = 1; 4 setTimeout(function() { 5 alert(a); 6 a = 1; 7 }, 1000); 8 9 a = 2; 10 11 setTimeout(function() { 12 alert(a); 13 a = 3; 14 }, 3000); 15 } 16 17 test(); 18 19 alert(0);

當腳本開始執行的時候,首先調用test(),代碼會繼續往下執行,所以alert(0)會先執行,窗口彈出0

再分析test()代碼
聲明變量a,并賦初值0,接著將a的值改為1
此時執行定時函數setTimeout
這里要說明一下,瀏覽器中有各種各樣的事件,如點擊事件、定時器事件等,各種事件都是以隊列的方式
進入javaScript引擎的,最后按照順序依次執行。這也從另一方面說明了JavaScript的執行方式是單線程的。
所以1000毫秒之后由定時器setTimeout產生的異步事件會進入到JavaScript引擎的隊列中,但是需要注意的是
在這1000毫秒的時間內,javaScript引擎也一直在解析代碼,所以接下來a被賦值為2,所以第二個彈窗中彈出
a的值為2,
由于隊列是順序執行的,所以第一個setTimeout事件后,a被賦值為1,所以第二個setTimeout中alert彈窗中
a的值為1,雖然a最后被賦值為3,但是第二個setTimeout是javascript中最后的一個事件,運行到這里腳本結束。

?

參考文章:

http://www.laruence.com/2009/09/23/1089.html

http://www.cnblogs.com/jeffwongishandsome/archive/2011/06/13/2080145.html

轉載于:https://www.cnblogs.com/iaknehc/p/7368182.html

總結

以上是生活随笔為你收集整理的深入理解JavaScript定时函数setTimeout的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。