codinghatso

함수형 프로그래밍 JavaScript ES6+ 본문

WEB/JavaScript

함수형 프로그래밍 JavaScript ES6+

hatso 2024. 3. 8. 13:14

시작하기 앞서 객체지향 프로그래밍과 함수형 프로그래밍의 차이점을 간단하게 정리하려고 합니다.

함수가 일급이냐 vs 객체가 일급이냐

* 일급 : 값으로 다룰 수 있으며, 변수에 담을 수 있다. 함수에 인자로 사용될 수 있으며, 결과로도 사용될 수 있다.

객체지향 프로그래밍

일급 객체를 사용을 지향하는 프로그래밍을 객체지향 프로그래밍이라고 합니다.

객체가 처리 요청을 받으면, 객체 내부에서 데이터 처리 후 반환하는 방식입니다.

객체지향의 큰 특징은 캡추다정상 으로 외웠던 그 단어들이 잘 보여줍니다.

슐화

상화

형성

보은닉

속성

여기서는 각 특징에 대한 자세한 글은 작성하지 않을 것입니다.

추가적으로 최근에는 캡추상다 연(관성) 으로 외우시는 분들도 있는 것 같습니다.

 

개인적으로 객체지향은 캡슐화와 상속성이 그 특징을 잘 나타낸다고 생각합니다.

 

함수형 프로그래밍

함수형 프로그래밍은 일급 함수 사용을 지향하는 프로그래밍 기법입니다.

함수가 값으로 다루어지는 만큼 다양한 방식으로 사용됩니다. 예를 들면 고차 함수가 있습니다.

* 고차 함수: 함수가 함수를 값으로 다룸

 

ES6+

International에서 ECMA-262와 ISO / IEC 16262에 정의된 내용을 바탕으로 만든 표준화된 스크립트 언어의 사양

표준에 맞는 JS의 구현 문법들이 함수형 프로그래밍을 가능하게 만들어 줍니다.

 

특징

상태와 가변 데이터를 멀리하는 프로그래밍 패러다임이며, 부수효과(Side Effect)를 제거한 순수 함수(Pure Function)들로만 작성됩니다.

불변성

  • 함수 외부에서 데이터를 수정하지 않음
  • 함수의 계산을 수행하는 동안 변수에 할당된 값들이 절대로 변하지 않음

 

참조 투명성

  • 동일한 인자에 대해 항상 동일한 결과를 반환해야 한다.
  • 참조 투명성을 통해 기존의 값은 변경되지 않고 유지된다.

 

고차 함수

  • 함수를 다루는 함수
  • 함수의 인자로 함수가 사용될 수 있다.
  • 함수의 결과(return value)로 함수를 사용할 수 있다.

익명 함수

  • 이름이 없는 함수
  • 람다식으로 표현되는 함수 구현

 

게으른 평가

  • 코드 실행 즉시 값을 평가하는 것이 아닌 필요한 시점에 평가

혹 이제 막 개발자 공부를 시작하신 분들은 JS 강의를 들으면서 '...' 스프레드나 화살표 함수 등 잘 모르지만 사용하고 있는 문법들이 함수형 프로그래밍의 일부분이라고 생각하시면, 함수형 프로그래밍에 흥미가 생길 것이라고 생각합니다.

 

함수형 프로그래밍 공부를 시작하기 앞서 작성한 글입니다. 이후 올라올 포스트에서 함수형 프로그래밍을 어떤식으로 활용할 수 있는지 하나씩 포스팅하겠습니다.

'WEB > JavaScript' 카테고리의 다른 글

this 개념 정리  (1) 2023.10.21
화살표 함수 심화  (0) 2023.10.20
화살표 함수  (0) 2023.10.20
구조 분해 (Destructuring) 문법  (0) 2023.03.30
문장과 표현식을 구분하자  (0) 2023.03.21
Comments