for循環使用var和let的區別


for(var i=0;i<5;i++){       

     setTimeout(function() {
        console.log(i);
     }, 0)

}
// 結果 5 5 5 5 5
for(let i=0;i<5;i++){

     setTimeout(function() {
        console.log(i);
     }, 0)

} // 結果 0 1 2 3 4

由於 var 命令的變量提升機制,var 命令實際只會執行一次。

let 命令不存在變量提升,所以每次循環都會執行一次,聲明一個新變量(但初始化的值不一樣)。

for 的每次循環都是不同的塊級作用域,let 聲明的變量是塊級作用域的,所以也不存在重復聲明的問題。

let生命變量的for循環里,每個匿名函數實際上引用的都是一個新的變量


免責聲明!

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



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