Перейти к основному содержимому

Формы записи +

Данные (входные через параметры) --> 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
  • Каррирование / частичное применение (по желанию) - цепочка вызова
  • функции, которые возвращают другую функцию (фабрики, каррирование).