개인 공부를 위해 작성했습니다
패러다임: 프로그래밍 패러다임은 개발자에게 프로그래밍의 관점을 갖게하고 결정하는 역할을 한다
functional programming: 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임
함수형 프로그래밍은 계산을 수학적 함수의 조합으로 생각하는 방식을 말한다. 이것은 일반적인 프로그래밍 언어에서 함수가 특정 동작을 수행하는 역할을 담당하는 것과는 반대되는 개념으로, 함수를 수행해도 함수 외부의 값이 변경될 수 없다.
명령형 프로그래밍: 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식
선언형 프로그래밍(declarative programming): 어떤 방법으로 해야 하는지(How)를 나타내기보다 무엇(What)과 같은지를 설명하는 방식
함수형 프로그래밍에서는 데이터가 변할 수 없는데, 이를 불변성 데이터라고 한다. (자바스크립트는 가능하지만 불가능한 언어들이 있다)
데이터 변경이 필요한 경우, 원본 데이터 구조를 변경하지 않고 그 데이터를 복사본을 만들어 그 일부를 변경하고, 변경한 복사본을 사용해 작업을 진행한다.
Array.map
, Array.reduce
const
키워드와 불변은 구분해야 한다.const
는Object
로 사용되는 경우 변경 가능하다.
immutable
이란 말 그대로 변경 불가능함을 의미.immutable
객체는 객체가 가지고 있는 값을 변경할 수 없는 객체immutable
객체의 값이 변경될 경우, 새로운 객체를 생성하고 변경된 값을 주입하여 반환해야 한다.mutable
객체는 해당 객체의 값이 변경될 경우 값을 변경한다.함수형 프로그래밍 패러다임을 따르고 있는 언어에서의 함수(function)는 일급 객체(first class citizen)로 간주된다.
(1급 객체 (First Object, 또는 1급 시민)
자바스크립트에서 함수(Function)는 객체(Object)이므로
1급 함수
로 불린다.
"일반적인 프로그래밍은 그냥 생각하면 되는 것이고, 함수형 프로그래밍은 기존과 다르게 생각하는 방법을 알려줄 것이다. 그러므로 당신은 아마도 예전 방식으로 절대 돌아가지 않을 것이다."
✔️ 함수형(선언형) 프로그래밍이란?