For 循环首先打印 if-else 语句的错误分支
Posted
技术标签:
【中文标题】For 循环首先打印 if-else 语句的错误分支【英文标题】:For loop prints wrong branch of if-else statement first 【发布时间】:2021-06-02 00:14:34 【问题描述】:以下代码只是为了测试功能
for (var i = 1; i <= 5; i++)
if(i==4)
console.log(document.getElementById("loading").classList.contains("invisible"));
break;
else
(function(i)
setTimeout(function() console.log(i) , i*1000);
)(i);
/*this basically gives true or false as result
document.getElementById("loading").classList.contains("invisible")*/
这是控制台日志
false
1
2
3
现在我的问题是,即使 if 条件“(1==4)”不为真,为什么我会变假,为什么当执行 if 语句的第一部分变假时代码不会中断
【问题讨论】:
【参考方案1】:传递给setTimeout
的匿名回调函数被异步调用。因此,可能会在评估另一个 console.log
之前评估 i==4
的 console.log
。
【讨论】:
以上是关于For 循环首先打印 if-else 语句的错误分支的主要内容,如果未能解决你的问题,请参考以下文章