-
함수형 프로그래밍Java Script/기본 개념 정리 2020. 8. 8. 17:20반응형
- 함수형 프로그래밍
- 순수 함수를 작성하는 것
- 숨겨진 입력이나 출력을 최대한 제거하여 코드의 대부분이 입력과 출력의 관계를 기술
- f(g(x))식의 수학적 표현을 컴퓨터 언어화 했다고 생각하면 편함
- 함수 중심 프로그래밍이라고 이해하면 편함
- 파이프
- 함수를 여러개 이용할 때, 가독성이 좋게끔 도와주는 기법
- f(g(h(x)))와 같은 표현식을 pipe(f,g,h)와 같이 바꿔줌
순수 함수
- 파라미터를 주었을 때 데이터의 변화없이 항상 같은 값을 내보내는 함수
- 동일한 입력에 대해 항상 동일한 출력
- 범위 밖의 변수에 의존 X
- 함수가 참조 투명성을 지키고, (숨은 입력과 출력)부작용을 줄인다.(없다.)
불변성 (Immutable)
값이 변경되지 않는 것을 의미함.
JS의 원시 타입이 이 불변성을 가지고 있음.
- Boolean, null, undefined, Number, String, Symbol
즉, 새로운 값을 만들기 위해서는 객체를 다시 생성해야한다.
함수에 이런 의미를 적용시키는 것이 순수 함수 ~> 함수형 프로그래밍 으로 가는 길
// mutable const bands = ["Metallica", "Queen"]; bands.push("Nirvana"); // immutable const someBands = ["Metallica", "Queen"]; const bands = [...someBands, "Nirvana"];
- 이런 느낌
선언적 패턴 (declearative patter)
알고리즘 명시 X, 우리가 이루고자 하는 것(목표)을 설명 ( 내부적으로는 구현해야함 )
명령적 패턴은 우리가 그것을 이루는 방법(알고리즘)을 설명, 목표 명시 X
const names = ["Han", "Chewbacca", "Luke", "Leia"]; // 명령형 패턴 const shortNames = []; for (let i = 0; i < names.length; i++) { if (names[i].length < 5) { shortNames.push(names[i]); } } // 선언적 패턴 const shortNames = names.filter(name => name.length < 5);
순수 함수, 불변성, 선언적 패턴은 함수형 프로그래밍으로 가는 지름길
반응형'Java Script > 기본 개념 정리' 카테고리의 다른 글
자바스크립트와 이벤트 루프 (0) 2021.01.14 Async & Await , Promise (0) 2020.08.17 클로저(Closer) (0) 2020.08.08 Object와 Instance (0) 2020.08.08 Javascript Class(클래스), Prototype(프로토타입), Property(프로퍼티) (0) 2020.08.08 - 함수형 프로그래밍