經典面試題,迴圈中使用閉包解決 var 定義函式的問題
for ( var i=1; i<=5; i++) , i*1000 );
}複製**
首先因為 settimeout 是個非同步函式,所有會先把迴圈全部執行完畢,這時候 i就是 6 了,所以會輸出一堆 6。
解決辦法有三種,第一種使用閉包
for (var i = 1; i <= 5; i++) , j * 1000);})(i);}
複製**
第二種就是使用 settimeout 的第三個引數
for ( var i=1; i<=5; i++) , i*1000, i);}
複製**
第三種就是使用 let 定義 i 了
for ( let i=1; i<=5; i++) , i*1000 );}
複製**
因為對於 let 來說,他會建立乙個塊級作用域,相當於
,i*1000 );
}i++
i++...
}
巢狀for迴圈中使用標號
可以給語句塊加標號賦予它們名稱,標號位於語句之前。標號只能被continue和break引用。格式如下 label statement 語句前只允許加乙個標號,標號後面不能跟大括號。通過用break後加標號對處於標號中的語句進行控制。往往標號後是for.while.do while等迴圈。通過用標號...
JS中使用閉包來定義常量
js中有個關鍵字const,但是目前的瀏覽器不支援。如果要是定義一些常量建議使用閉包 var class function 定義了乙個靜態方法,獲取常量的方法 test.getupper bound function return test var k class.getupper bound co...
flex在for迴圈中使用setTimeout
有時候我們需要在flex中使用延時載入的功能,下面我簡單記錄一下如何在for迴圈中使用flex延時載入方法settimeout的用法 方法如下 flash.utils.settimeout closure function,delay number,parameters uint 引數詳解 clos...