함수형 프로그래밍
- 코드 작성 스타일
- 선언형 코드
- 결과값을 선언하는 것
- filter 등으로 선언형 코드를 사용할 수 있음.
- ex) CSS
- 명령형 코드
- 결과값에 “어떻게” 도달하느냐에 관한 것
- Javascript 는 명령형 코드
함수형 프로그래밍의 특징
- 순수 함수(Pure Function)
- 함수에서 외부의 상태값을 참조하거나 외부의 상태를 변경하는 것은 순수 함수가 아니다.
- 동일한 인자를 넣었을때 항상 동일한 결과를 리턴해야 한다.
- 비상태, 불변성 (Stateless, Immutability)
- 비상태, 불변성을 유지해야한다.
// 틀린 코드 let person = {name : "mocha",age:28}; function increaseAge(person){ person.age = person.age +1; return person; } // Stateless, Immutablility const person = {name : "mocha",age:28}; function increaseAge(person){ return {...person, age:person.age+1}; } //Javascript는 불변성 데이터 타입이 없기 때문에 Object.freeze를 통해 불변성 유지 가능 const person = Object.freeze({name : "mocha",age:28}); function increaseAge(person){ return Object.freeze({...person, age:person.age+1}); }
- no SideEffect
- 선언형 함수 (Expressions Only)
- no statements like if, switch, for 등등
일급함수
- 일차함수 : 함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현한다.
- 예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 매개변수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있다.
- 일급 객체 : 함수는 일급 객체이다.
- 다음 조건을 만족하는 객체를 일급 객체라고 한다.
- 무명의 리터럴로 생성할 수 있다. (런타임 생성이 가능하다.)
- 변수나 자료구조(배열의 요소나 객체의 속성값)에 할당 할 수 있다.
- 함수를 다른 함수의 인자로 전달될 수 있다.
- 함수를 다른 함수의 결과로서 리턴할 수 있다.
- 다음 조건을 만족하는 객체를 일급 객체라고 한다.
- 함수는 객체의 인스턴스이다
- 함수를 정의할 때 실제로는 객체를 만드는 것이다.
- 함수는 Object.prototype 객체의 프로퍼티를 상속받는다.
- function helloWorld(){ console.log("hello world"); } console.log(typeof helloWorld); // --> function console.log(helloWorld instanceof Object); //-->true
- 자바스크립트 함수는 함수 객체라고 하는 특수한 유형의 객체이다.
고차함수
- 고차함수 : 고차 함수는 함수를 인자로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수
- 고차함수의 예시
- 다른 함수를 인자로 받는 경우
- 함수를 리턴하는 경우
- 함수를 인자로 받고, 함수를 리턴하는 경우
- 고차함수의 예시
- 배열의 내장 고차 함수
- 배열 고차 함수 메서드 : forEach, find, filter, map, reduce, sort, some, every
Reference
'면접,CS' 카테고리의 다른 글
[면접,CS] 객체지향 프로그래밍, SOLID 원칙 (0) | 2023.01.05 |
---|---|
[면접,CS] 아키텍처 패턴 (0) | 2023.01.05 |
[면접,CS] 의존성주입(DI) (0) | 2023.01.05 |
[면접,CS] 디자인패턴 (0) | 2023.01.04 |
[면접,CS]라이브러리, 프레임워크 (0) | 2023.01.04 |