Типа сайдэффект - термин, я его не знаю, но могу предположить, что это слово обозначает выполнение с операциями как бы вне функции)))
Дерзить никому не собирался 🖖😁
Ну... скорее всего проще думать, что если функция не имеет сайд-эффектов, то её можно легко переносить по коду без влияния на результат, потому как для одних и тех же параметров она всегда будет возвращать один и тот же результат. Например,
test1(a, b)
test2(a, b)
Если это функции без сайд-эффектов, то мы можем сначала вызвать test2 а потом test1. А если есть сайд-эффекты, например, вывод на печать, или объект a изменяется, или в базу что-то пишется, или ракеты запускаются, как любят шутить в среде чистых функциональщиков, то переставлять такие функции нельзя.