0.1? Let/var не стоит внутри фора, значит это глобальная переменная или просто объявлена где-то выше
2. Запускается фор. Он 10 раз увеличивает значение opacity с 0.1 до 1.2 с шагом в 0.1. Тут вопрос, почему он останавливается на 1.2, а не на 1.1. У тебя точно в форе не «<=« условие?
3. Все, что делает фор - запускает тайм-аут с объявленным тобою коллбеком. Пока фор не закончится, ни один из коллбеков тайм-аута не сработает
4. Фор заканчивается. Тайм-ауты заканчиваются. Запускаются коллбеки. Так как переменная опасити в этот момент уже изменена из-за фора, она равна 1.2
5. Каждый из коллбеков выводит значение item.style.opacity. В первом запущенном коллбеке значение этого свойства до сих пор равно 0.1, так как оно ничем не было изменено, см. Свою первую строчку, значит коллбек выводит 0.1 и затем присваивает в item.style.opacity значение глобальной переменной opacity 1.2
6. Остальные коллбеки по сути бесполезны - печатают 1.2 и приравнивают 1.2 (уже изменённый в пером коллбеке item.style.opaxity) к 1.2 (глобальная переменная opacity). Поэтому, кстати, в консоли хрома цифра 10 около цифры 1.2 - так хром «схлапывает» одинаковые логи
Открытым остаётся вопрос, почему в момент, когда opacity, казалось бы, равно 1.1, условие «1.1<1.1» в форе возвращает тру и ещё одна итерация цикла срабатывает. Может, это связано с приколом про «0.1+0.2», может, у тебя там <= стоит, может, я чего-то не догоняю. Попробуй поставить let перед opacity внутри фора («for (let opacity = 0.1 ...)»), тогда вроде как opacity будет своя на каждый блок внутри фора, тогда и выводить он будет по очереди циферки
как ты скучно живешь
Обсуждают сегодня