Антон Спирин, не соглашусь. В консоль это выводится, потому что я тестирую функцию запуском через консоль. Если убрать все console.log(), то в консоль всё-равно выводится "undefined" и alert(userFadeout2(el)) показывает "undefined". Либо я чего-то не понимаю, но opacity в принципе не может быть "undefined".
kreotech, это сути не меняет. Условно неправильно ни то, ни другое. Проблема в том, что я не могу понять как сделать здесь правильную рекурсию, либо обойтись без неё, но сделать так, чтобы функция возвращала true, когда opacity == 0.
Ну так ничего возвращаться и не должно, возврат должен произойти только, когда opacity == 0, в противном случае функция вызывается заново. И это всё работает, когда нет setTimeout.
Я понимаю, что это возврат не самой функции, я не понимаю как это исправить. Т.е. сделать задержку иным способом.