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