Cаммари: JS: Функции
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Читать в полной версии →
Chapter 2: Чистые функции
Детерминированность: Функция, которая при одних и тех же входных параметрах выдает одинаковый результат, не должна зависеть от внешних переменных.
Side-effect: Функции с побочными эффектами, включающие запись/чтение/вывод на экран
Pure-function: Детерминированная функция без побочных эффектов
Chapter 3: Разделение команд и запросов
- Каждая функция является либо запросом(query), либо командой, и выполняет действие(action). Команда всегда связана с выполнением побочных эффектов, а чистые функции возможны только для запросов.
- Команда: может возвращать только успешность своего завершения true/false
- Запрос: «Задавая вопрос, не изменяй ответ»: запрос не должен изменять входные данные
Chapter 4: Оператор Rest
- const func = (a, ...params) => {} // упаковка множества входящих параметров в массив params
Chapter 7:Объекты первого класса
- Объекты первого класса: элементы, которые могут быть переданы в функции, возвращены из функций и присвоены переменным
- В JavaScript функции — это объекты первого рода.
- (() => console.log('I love Hexlet'))(); вызов функции один раз
Chapter 8: Функции высшего порядка
- Функции высшего порядка - это функции, которые либо принимают, либо возвращают другие функции, либо делают всё сразу.
Map/Filter/Reduce:
- Метод map() создаёт новый массив с результатом вызова указанной функции для каждого элемента массива. Возвращает отображаемый элемент в новом виде.
- Метод filter() callback должен вернуть предиктат true/false
- Метод reduce() возвращает аккумулятор своей работы const sum = users.reduce((acc, user) => acc + user.amount, 0); Или же reduce(callback(acc, elem), acc)
Chapter 13: Парадигмы программирования
- Императивная отвечает на вопрос КАК — использует переменные, циклы, присваивания
- Декларативная отвечает на вопрос ЧТО сделать — использует логические цепочки и связывание вместо присваивания