один и тот же объект -- это разный результат?
Да.
Функция должна вернуть что то с чем одинаковый кусок кода выдаст одинаковый результат.
Код:
console.log(func())
должно вести себя абсолютно одинаково и ни от чего более не зависеть.
Сколько раз не напиши подряд - должно быть 10,10,10,10...
Видим код - сразу же сужаем те возможности что он может сделать.
Чистота функций в ФП рассматривается в полезном смысле именно благодаря этому свойству. Иначе бы никому и не было бы интересно.
Видим:
Код:
func1(f(arg),g(arg))
и к примеру совершенно не заморачиваемся сперва вычислится ли f(arg) или сперва вычислится g(arg). Порядок вычисления НЕВАЖЕН.
Отсюда возможности к параллелизму и т.п.
На корню такую возможность срубает мутабельность и вот эти вот ссылочные мутабельные объекты.
Если дело принимает такой оборот программа обрастает мгновенно невидимыми и неявными но сильными связями затрудняющими то-то и то-то.
В этом смысле чистое ФП воспринимается как некая "благодать".
Но признаюсь тоже в данный момент - я не сильный поклонник ФП, хотя признаю что штука красивая и как минимум отличная разминка для мозгов.
Но я в практике сильно не сталкивался и более того - не хочу.