Functional Programming
https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0
Funcional Programming이란?
Functional Programming은 순수 함수로 접근하는 것으로 공유 상태(pure functions) , 불변 데이터(mutable data) , 사이드 임펙트(side impact)를 피할 수 있다.
Functional Programing은 선언형 프로그램(Imperative Programming)이다.
OOP(Object Oriented Programming)과 대비 된다.
filter, map, reduce와 같은 메서드를 활용하는 것이 대표적인 Functional Programming의 예
Functional Programming에 대해서 알아둬야할 것
Pure functions(순수 함수)
Input과 Output이 항상 같아야 한다.
Function composition(함수 합성)
Avoid Shared state
공유 되는 데이터를 피하라.
꼭 ㅣ지켜야한다.
Avoid Mutating state
생성 후 그 상태를 바꿀 수 있는 것을 피하라.
Avoid Side effects
사이드 임팩트를 피하라.
1. 순수한 함수(pure function) 부작용(side-effect)이 없는 함수,
함수의 실행이 외부에 영향을 끼치지 않는 함수를 뜻한다.
2. 익명 함수(anonymous function)
이름이 없는 함수. x -> x * x
3. 고계 함수(higer-order function)
함수를 다루는 함