вопрос, почему в чистой функции нельзя использовать setTimeout?(при условии, что он не влияет на результат функции) В чате по node js уже целые баталии устроили про чистые функции))
а почему нет?
потому что чат для помощи новичкам, а не срачиков?
да я видел, вообще не понятно в чём суть спора, бред какой-то. Есть вообще чёткое определение "чистой функции"?
по сути аналаог математической функции
так вот и помогите), я относительно новичок.. суть же не в разведении баталий, а в том, что бы получить ответ) причем тут срач?
задайте вопрос на СО, ток на англоязычном. придут умные дяди и скажут вам всё, что надо
зачем он тогда нужен, если он не влияет на результат?
я только хотел спросить хд
1:1 хд
вопрос теоретический) Чтоб докапаться до сути, что есть чистая функция
мне кажется вообще setTimeout никак не будет относится к определению чистой функции, если функция асинхронная и там всегда будет возвращаться что-либо после таймаута и он действительно там нужен и все остальные определения чистой функции соблюдены, то ок
потому что setTimeout решение маргиналов
https://www.sitepoint.com/functional-programming-pure-functions/ читайте
Потому что это часть браузерного апи, хотя бы
вот об этом я тоже думал) Это объяснение понятное, если дело именно в этом
всм? кнчн, да, как ещё. я просто на русском и не гуглю
Ну я понимаю что чистая функция возвращает предсказуемый всегда результат, без сайд-эффектов. Использование любого апи может иметь сайд эффекты, так как не вы его контролируете. Но я могу сильно ошибаться, может поправят :)
Ну, без английского действительно - ггвп
ага. У меня такое же понимание. Если мы не можем гарантировать, что вернет функция, то это сайд эффект. А т.к это не часть языка, то гарантировать мы не можем. Но опять же я тоже не уверен на 100% что дело именно в этом))
Ну я видел решения с нулевым setTimeout, именно из-за особенностей реализации event loop и task queue. Довольно маргинально, но видел такое )))
почему маргинально? норм кейс такта, зато поток не блочит хд
Ну я такое юзал с Гугл картами, иначе группировка маркеров нормально не работала
Потому что в чистой функции можно вызывать только другие чистые функции, которые не оказывают влияние на окружение. таймаут такое влияние оказывает.
Обсуждают сегодня