Тема 2. Подготовка материалов для выступления по функциональному программированию на языке JavaScript

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

Принципы функционального программирования:

Чистыми называют функции, которые не имеют побочных эффектов ввода-вывода и памяти (они зависят только от своих параметров и возвращают только свой результат). Чистые функции для одних и тех же аргументов возвращают одинаковый результат.

Пример чистой функции:

function multuply(a, b) {
    return a * b;
}

Иммутабельность - невозможность изменения сущности. Пример функции:

function slugify(str) {
    return str.toLowerCase().trim().split(' ').join('-');
}
 
let str = 'some url text';
slugify(str);

Приведённые в коде функции позволяют создать функцию для преобразования строки, не меняющую исходную строку.

Если функция неизменно возвращает один и тот же результат для одних и тех же передаваемых ей входных значений, она обладает ссылочной прозрачностью.

Идея восприятия функций как объектов первого класса заключается в том, что такие функции можно рассматривать как значения и работать с ними как с данными. При этом можно выделить следующие возможности функций:

Функции высших порядков — это такие функции, которые могут принимать в качестве аргументов и возвращать другие функции. В JavaScript стандартные методы массивов filter, map и reduce принимают в качестве аргументов функции.