Я изучаю циклы в javascript и пробую некоторые вещи. Я написал следующий базовый код.
Этот код генерирует бесконечный цикл, который бесконечно печатает число 4 в консоли.
Проблема в том, что я не понимаю логики этого и точной причины, почему это происходит.
for(let i = 0; i = 4; i++){
console.info(i);
}
Второе выражение должно быть логическим условием, но ваше — это присваивание (что верно). Так зацикливается навсегда.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


i = 4 — это выражение, которое вернет 4, а 4 — допустимое значение, поэтому условие никогда не становится ложным, и цикл никогда не заканчивается.
console.info(i=4); //4
console.info(Boolean(i=4)); //truefor(let i = 0; i <= 4; i++){
console.info(i);
}В вашем цикле часть условия использует оператор присваивания=, вы должны использовать оператор сравнения, например !==. Также обратите внимание, что условие должно быть ложным, чтобы выйти из цикла for. Так что !== это (или <=, что мне не нравится по личным причинам), вместо ===.
for(let i = 0; i !== 4; i++){
console.info(i);
}Итак, ваш код работает бесконечно, потому что i = 4 — это правдивый. И он печатает 4, потому что i = 4 присваивает 4 приращению i после
или
i =< 4, чтобы напечатать каждое число до 4