for循环中setTimeout,var与let的不同


先看下面两段代码

        for (let i = 0; i < 5; i++) {
            setTimeout(function () {
                console.log(i)
            }, 2000)
        }

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

一个是输出0 1 2 3 4一个是输出5个5 为什么let的i,在setTimeout里的匿名函数,i取的还是块级作用域里的i?

一个假设是let的循环中,每次循环,js引擎让i都变成了一个新变量的原因导致的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM