执行以下代码,5 秒后内输出的结果为 5 5 5 5 5

发布时间 2023-11-10 13:10:13作者: 龙陌
for(var i = 0; i < 5; i++){
    setTimeout(function(){
        console.log(i);
    }, 1000 * i);
}

setTimeout()是一个异步函数,由于js会先执行所有同步任务,再执行异步任务,
所以当开始执行setTimeout()异步任务时,for循环早已结束,
并且由var声明的变量i不具有块级作用域的特点,当for循环结束时,i值为5,故再执行setTimeout()函数时,输出结果为5 5 5 5 5

4<5 ,执行完循环后i++,i=5进不去循环了