Я новичок в JS и изучал функциональное программирование и чистые функции. Но я не могу получить истинное значение «Функция чиста, только если при одном и том же входе она всегда будет давать один и тот же результат». Вопрос в том, насколько это полезно в реальных программах. Я часто сталкиваюсь с этим примером:

function add(num1) { return console.log(num1   Math.random()); } 

Я просто не вижу смысла в том, что «при одинаковом входе он всегда будет давать одинаковый вклад» в реальных случаях.

Mirasan

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,

Да, этот вопрос является широким и основанным на мнении . Хотя я постараюсь ответить на некоторые части:

Чистые функции в основном выигрывают от :

  • Быть тестируемым , потому что вы можете предсказать (знать раньше) ожидаемый результат на основе данного ввода ; нет побочных эффектов (например, random ), нет ввода / вывода (например, console.log )
  • Может быть реализован без участия в объекте, который управляет каким-либо состоянием (например, в некоторых языках как статические служебные функции или внутри служебных классов )
  • Может быть объединен в цепочку или вложен как математическая формула (например, total = sum(product(quantity_a, price_a), product(quantity_b, price_b)) )

Чистые функции тесно связаны с :

Чистые функции на практике применяются, когда :

  • Математические и статистические расчеты (например, сложение, вычитание, синус, макс, медиана)
  • Строковые операции (например, concat, trim, substring, regex, replace)

Чистые функции противопоказаны, если :

  • Необходима случайность (например, шифрование , генерация уникального идентификатора)
  • запрос базы данных (зависит от состояния записей в таблице)
  • запись данных в файл (зависит от состояния диска)