순수함수란 아래의 의미를 가진다.
사이드이펙드란 외부 세계에서 관찰할 수 있는 시스템의 모든 변경을 말한다.
함수는 결과를 생성하기 위해 인수에만 의존한다.
함수는 사이드이펙트를 발생시키지 않는다.
순수함수는 함수형 프로그래밍에서 자주 사용되는 개념으로, 오직 함수의 입력만이 함수의 결과에 영향을 주는 함수를 의미하며, 사이드 이펙트가 없어야 한다.
사이드 이펙트란 외부 변수를 참조하거나, 변경하는 모든 종류의 코드를 의미한다.
자바스크립트에서 순수함수를 제작하기 위해선 데이터의 불변성을 유지해야한다. 함수의 전달 인자로 참조 자료형이 전달되는 경우, 객체의 변화가 생겨 사이드 이팩트를 만들수 있고 이는 데이터의 불변성을 손상시키게 된다. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce등을 사용하는게 좋다.