javaScript for 循環中使用 let 和 var


var 聲明

for(var i = 0; i<5; i++){ setTimeout(()=>console.log(i),0)    // 5 5 5 5 5
}

上面的代碼因為setTimeout是一個異步,所以它拿到的是循環結束后的i的值,
因為上面我們說的var是全局變量會被覆蓋掉所以最后的i值是5,而且一共循環了5次(0-4),所以會打印五個5。

 

let 聲明

for(let i = 0; i<5; i++){ setTimeout(()=>console.log(i),0)     //0 1 2 3 4
}

 上面的代碼,因為在for循環中使用了let聲明循環變量,

 所以每一個值都會存在於單獨的作用域不會被覆蓋掉,因此,循環結束后得到的值是0,1,2,3,4

 

因為let有自己的作用域塊,所以在for循環表達式中使用let其實就等價於在代碼塊中使用let

 


免責聲明!

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



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