함수형 프로그래밍은 몇 가지 특징이 있습니다. 우선 인풋과 아웃풋이 있다는 점과 외부 환경으로부터 철저하게 독립적이라는 점입니다. 전역 변수와 같은 외부의 환경을 참조하지 않습니다.(물론 사용이 필요할 땐 인자로 넣고 사본을 만들어서 처리) 앞서 두 가지 특징 덕분에 같은 인풋에 있어서 동일한 아웃풋을 생산하게 됩니다(불변성). 이런 걸 순수 함수라고 말하는데, 순수 함수의 특징은 side effect로부터 자유로워진다는 점입니다. 물론 함수형이 아니더라도 side effect를 막기 위해 Java의 경우 synchronized를 이용해서 수동으로 변수에 락을 거는 등 수동으로 안전하게 처리할 방법은 있지만 JavaScript에서는 구현이 까다롭고 휴먼 에러가 생길 여지가 있습니다. 함수형 프로그래밍의 이런 특징 덕분에 높은 수준의 추상화가 가능하고 코드 재사용이 상대적으로 수월하며 예측 가능성을 높일 수 있습니다.