DIV CSS 佈局教程網

js實現異步循環
編輯:JavaScript基礎知識     
問題
實現異步循環時,你可能會遇到問題。

讓我們試著寫一個異步方法,一次循環打印一次循環的索引值。
運行代碼
<script>for(var i = 0; i < 5; i++)
{
setTimeout(function(){
document.writeln(i);document.writeln("<br />");
},1000);
}</script>
如上程序的輸出為:

5
5
5
5
5

原因
每次時間結束(timeout)都指向原始的i,而並非它的拷貝。所以,for循環使i增長到5,之後timeout運行並調用了當前i的值(也就是5)。

解決方法
有幾個不同的方式可以拷貝i。最普通且常用方法是通過聲明函數來建立一個閉包,並將i傳給此函數。我們這裡使用了自調用函數。

運行代碼
<script>for(var i = 0; i < 5; i++)
{
(function(num){
setTimeout(function(){
document.writeln(num);document.writeln("<br />");
},1000);
})(i);
}</script>
輸出

0
1
2
3
4

JS閉包新手入門總結
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved