Формы записи +
Данные (входные через параметры) --> function --> Данные' (обработанные)
// данные
const data = 0;
// функция
function doSmth(value) {
const newData = value + 1; // обработка данных
return newData; // возврат значения
}
// вызов
doSmth(data); // 1
console.log(doSmth); // ƒ doSmth() - код функции
typeof doSmth; // 'function', хотя нет такого типа данных
Формы записи: declaration / expression / arrow
function declaration
- Классическая запись
- Hosting есть, можно вызывать до объявления
function summ1(a, b, c) {
return a + b + c;
}
function expression
- Сохранение тела функции в переменную
- Вызывать можно только после объявления (Hosting нет)
const summ2 = function (a, b, c) {
return a + b + c;
};
arrow function
- Современнаая и лаконичкая (ES6)
- Ключевое слово
returnможно опустить, если в одну строку ()можно опустить, если один параметр- Вызывать можно только после объявления (Hosting нет)
const summ3 = (a, b, c) => a + b + c;
Возврат значения (return)
returnзавершает выполнение функции и возвращает значение наружу.- Если у функции отсутствует
return, то она возвращаетunderfined.
function checkAge(age) {
if (age < 18) return;
return 'ok';
console.log(age); // эта консоль не отобразится
}
Результат выполнения функции можно сохранять в переменную
const isOk = checkAge(22);
console.log(isOk); // 'ok'
Найминг
Если переменная - это существительное, то переменная - это глагол в camelCase, действие. Общее правило - в НАЗВАНИИ ФУНКЦИИ должен находитьтся глагол, описывающий то, что функция делает:
get- получают данные (getUserData())calc- что-то вычисляют (calcSummOfProducts())create- что-то создают (createNewUser())show- что-то показывают (showSeasonAdvert())check- что-то проверяют и возвращают логическое значение (checkFormValidation())
Функции вышего порядка
Встроенные методы и функции языка, которы е принимают другую функцию в качестве аргумента и/или возвращают функцию.
Методы массивов
forEach(), map(), filter(), reduce(), reduceRight(), find(), findIndex(), findLast(), findLastIndex(), some(), every(), sort(), toSorted(), flatMap()
Map / Set
forEach()
String
replace(), replaceAll()
Таймеры
setTimeout(), setInterval(), clearTimeout()
DOM
addEventListener()
Промисы
then(), catch(), finally(), Promise.all(), Promise.race(), Promise.any(), Promise.allSettled()
JSON
JSON.parse(), JSON.stringify()
Функциональное программирование
Функциональное программирование (ФП) — стиль, в котором логика строится на чистых функциях и неизменяемых данных.
Основные идеи
- Чистые функции: одинаковые входные данные → одинаковый результат, без побочных эффектов.
- Иммутабельность: не изменяем исходные данные, создаём новые.
- Функции высшего порядка: функции принимают/возвращают другие функции.
const nums = [1, 2, 3];
// функциональный стиль — без мутаций
const doubled = nums.map(n => n * 2); // pure function (чистая функция)
doubled; // [2, 4, 6] - получили нужный нам ответ
nums; // [1, 2, 3] - исходные данные остались прежними
- Генераторы (function*) yield
- Каррирование / частичное применение (по желанию) - цепочка вызова
- функции, которые возвращают другую функцию (фабрики, каррирование).