setTimeout()函式延遲迴圈語句的異常簡單介紹
本章節介紹一下使用setTimeout()來延遲迴圈導致異常簡單介紹。
其實不能說異常,準確的說應該原本就是如此,只是比較讓人迷惑而已。
先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼for(var index=0;index<10;index++){ setTimeout(function(){ console.log(index); },0); }
上面的程式碼很多朋友可能第一眼看到的時候,認為會一次輸出0-9,但是事實並非如此,而是輸出的每一個都是10。
之所以這樣是因為使用setTimeout()函式後,會產生非同步操作,當for迴圈執行執行完畢後,index的值已經變為10,所以輸出的每一個值都是10,下面程式碼修改如下:
[JavaScript] 純文字檢視 複製程式碼for(var index=0;index<10;index++){ setTimeout((function(index){ return function(){ console.log(index); } })(index),0); }
上面的程式碼可以按照順序輸出數字,這裡採用閉包的方式實現了我們的要求。
相關文章
- js如何退出迴圈語句簡單介紹JS
- setTimeout()呼叫的函式傳遞引數簡單介紹函式
- javascript事件處理函式迴圈批量繫結簡單介紹JavaScript事件函式
- Java簡單迴圈語句案例Java
- 如何跳出jquery的each()函式迴圈語句jQuery函式
- Verilog HDL迴圈語句簡介
- AWK if(條件)語句與迴圈簡介
- C++移動建構函式以及move語句簡單介紹C++函式
- js迴圈中reduce的用法簡單介紹JS
- JavaScript return語句簡單介紹JavaScript
- javascript with()語句用法簡單介紹JavaScript
- Matlab的if語句switch語句for迴圈while迴圈語句練習MatlabWhile
- javascript匿名函式簡單介紹JavaScript函式
- 函式表示式和函式宣告簡單介紹函式
- java常見語句之迴圈體Java
- javascript流程控制語句簡單介紹JavaScript
- 實現簡單延遲佇列和分散式延遲佇列佇列分散式
- Python簡單函式迴圈綜合例項Python函式
- js isNaN函式的用法簡單介紹JSNaN函式
- jQuery常用的動畫函式簡單介紹jQuery動畫函式
- jQuery的index()函式用法簡單介紹jQueryIndex函式
- javascript呼叫函式的方式簡單介紹JavaScript函式
- javascript匿名函式的使用簡單介紹JavaScript函式
- js eval()函式的用法簡單介紹JS函式
- javascript異常報錯型別簡單介紹JavaScript型別
- javascript call()函式用法簡單介紹JavaScript函式
- javascript trim()函式用法簡單介紹JavaScript函式
- getFullYear()函式用法簡單介紹函式
- document.close()函式簡單介紹函式
- js isPrototypeOf()函式用法簡單介紹JS函式
- javascript高階函式簡單介紹JavaScript函式
- jQuery建構函式簡單介紹jQuery函式
- javascript函式呼叫方式簡單介紹JavaScript函式
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈-FOR迴圈中的索引SQL索引
- MySQL 延遲從庫介紹MySql
- js中匿名函式的使用簡單介紹JS函式
- js函式的length屬性簡單介紹JS函式
- javascript匿名函式的優點簡單介紹JavaScript函式