В функциональном программировании мы хотим выразить всю нашу программу в терминах функций. Функциональное программирование декларативно. Это означает, что мы больше сосредотачиваемся на том, что делать, а не на том, как делать. В этой статье я попытаюсь объяснить вам основы функционального программирования на примере JavaScript.

Сначала давайте поймем, почему функциональное программирование так важно. Функциональное программирование позволяет нам

Функции являются гражданами 1-го класса, потому что функции могут быть:

  • Присваивается переменным.
  • Также может быть добавлен к объектам и массивам.
  • Отправляется другим функциям в качестве аргумента.
  • Может быть возвращено из других функций.

Давайте приступим к делу.

Нефункциональный способ

let name = "Sayuri" ;
let message = "Hey, fellow devs, I am " ;
console.log(message + name)
Output -> Hey, fellow devs, I am Sayuri

Функциональный способ

function message(name) {
 return "Hey, fellow devs, I am " + name ;
}
message("Sayuri")
Output -> Hey, fellow devs, I am Sayuri

«Чистая функция — это функция, которая при одних и тех же входных данных всегда будет возвращать один и тот же результат».

Чистая функция:

  • Принимает как минимум 1 параметр.
  • Вернуть что-то (значение или функцию).
  • Не изменяет никаких аргументов.

Не чистый

let name = "Sayuri" ;
function message(){
 console.log("Hey, fellow devs, I am " + name )
}

приведенный выше код не является чистым, потому что

  • → Он не принимает имя в качестве параметра.
  • → Это имеет дело с чем-то в глобальной области видимости.
  • → Также у него нет возвращаемого значения.

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

Чистая функция

function message(name) {
 return "Hey, fellow devs, I am " + name
}

« Функция высшего порядка — это функция, которая принимает функцию в качестве аргумента, либо возвращает функцию, либо делает и то, и другое».

const greet = function takeName (name){
 return function message(msg){
 return msg + name 
 }
}
greet("Sayuri ")("Hey, fellow devs, I am ")
Output -> Hey, fellow devs, I am Sayuri

Неизменяемость означает, что нельзя изменить.

Мутация → (Плохо)

const code= [ "Javascript", "Python", "React" ]
code[ 1 ] = "Node"
console.log(code)
Output -> [ "Javascript", "Node", "React" ]

Иммутация

const code = [ "Javascript", "Python", "React" ]
const code2 = code.map(lang=> {
 if(lang=== 'Python') {
 lang= 'Node';
 }
 return lang;
});
console.log(code2)
Output-> [ "Javascript", "Node", "React" ]

И последнее, но не менее важное. Не выполняйте итерацию с использованием for или while/циклов → используйте Map, Reduce, Filter и т. д.

Позвольте мне ваши мысли.

Первоначально опубликовано на https://santamaria-paul.medium.com 13 апреля 2021 г.