JS面試題--使用for循環打印1-10,每個數字出現的間隔約500ms


又來刷面試題啦,哈哈。

要求:使用for循環打印1-10,每個數字出現的間隔約500ms。

分析:考察點--閉包,塊級作用域

方式一、使用閉包+立即執行函數,自己當時的思路也是這樣想的,但是,結果卻沒有體現間隔500ms

/*結果雖然依次輸出了1-10,但是每個數字之間沒有間隔,是一次性輸出的,所以不正確*/ 
for (var i = 1; i <= 10; i++) { setTimeout((function(i) { console.log(i); })(i), 500); }

  經過修改,結果滿足要求:1.setTimeout每次的間隔500*i,保證每隔500ms輸出一次  2.將立即執行移到外層

/**
 * 使用for循環打印1-10,每個數字出現的間隔約500ms
 * 方法一、使用閉包,注意setTimeout,每隔500ms,因此每次傳遞的間隔時間要乘以i
 */
for(var i=1;i<=10;i++){
    (function(i){
        setTimeout(function(){
            console.log(i);
        },500*i);
    })(i);

}

  方法二、使用let,let本身就是塊級作用域

for(let i=1;i<=10;i++){
    setTimeout(function(){
        console.log(i);
    },500*i);
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM