Ладно, мы не говорим о чем-то более чистом, чем простая старая вода.

Сегодня мы говорим о… чистых функциях.

Что такое чистая функция в javascript?

Чистая функция - это функция, которая будет возвращать тот же вывод при том же вводе. Хм ... это непонятно, правда? Итак, вот пример:

function pureAdd(p1, p2){
  return 1 + p1 + p2;
}

Здесь, если значения p1 и p2 остаются неизменными, мы всегда будем получать одно и то же значение от pureAdd. Нам не нужно беспокоиться о каком-то общем состоянии или других факторах, которые меняют результат.

Ну тогда… что такое нечистая функция?

Нечистая функция - это функция, которая изменяет переменные / состояние / данные за пределами своей лексической области видимости.

Что это обозначает?

Итак, возьмите пример выше, но вместо того, чтобы просто вернуть значение, давайте также изменим внешнюю переменную:

let a = 1;
function pureAdd(p1, p2){
  a = p1 + p2;
  return 1 + p1 + p2;
}

В тот момент, когда мы модифицируем что-то вне области действия функции, функция становится нечистой функцией.

Вот и все! вы только что узнали, что такое чистая и нечистая функция в javascript.