
В функциональном программировании мы хотим выразить всю нашу программу в терминах функций. Функциональное программирование декларативно. Это означает, что мы больше сосредотачиваемся на том, что делать, а не на том, как делать. В этой статье я попытаюсь объяснить вам основы функционального программирования на примере 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 г.