#javascript #for-loop #if-statement #settimeout #contains
#javascript #цикл for #if-statement #settimeout #содержит
Вопрос:
следующий код предназначен только для проверки функциональности
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
Теперь мой вопрос в том, как и почему я получаю false, даже если условие if «(1 == 4)» неверно, и почему код не прерывается, когда первая часть оператора if выполняется для получения false
Ответ №1:
Переданная анонимная функция обратного setTimeout
вызова вызывается асинхронно. Следовательно, может быть так, что console.log
for i==4
вычисляется до console.log
того, как будет вычислен другой.