함수형 프로그래밍에서는 어떤 외부 상태에 의존하지도 않고 변경시키지도 않는, 즉 부수 효과(Side Effect)가 없는 함수를 순수함수(Pure function)이라고 한다. 즉, 동일한 입력이 주어지면 항상 동일한 출력을 반환하는 함수.
반대로 부수 효과가 있는 함수는 비순수 함수(Impure function) 이라고 한다.
sideEffect
가 발생할 경우 참조 데이터가 변경되기 때문에 의도하지 않는 오류와 반응이 발생할 경우가 있습니다.
자바스크립트에서 순수함수를 제작하기 위해서 데이터의 불변성을 유지하는 것이 중요합니다. 함수의 전달인자로 참조 자료형이 전달되는 경우, 의도치 않게 해당 객체 자체를 바꾸는 사이드 이펙트를 만들수도 있고, 이는 해당 데이터의 불변성을 손상시킵니다. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce등을 많이 씁니다.
비순수함수를 사용하면 다음과 같은 문제가 발생한다.
위와 같은 이유로 비용이 증가하게 되므로, 함수형 프로그래밍에서는 순수함수의 사용을 지향한다.
cr. 참고자료
순수 함수는 오직 함수의 입력만이 함수의 결과에 영향을 주는 함수입니다.
사이드이펙트가 없는 함수로, 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수이자, 외부의 상태를 변경하지 않는 함수입니다.
사이드 이펙트란, 외부 변수를 참조하거나, 변경하는 모든 종류의 코드를 의미합니다.
함수의 전달인자로 참조 자료형이 전달되는 경우, 의도치 않게 해당 객체 자체를 바꾸는 사이드 이펙트를 만들수도 있고, 이는 해당 데이터의 불변성을 손상시킵니다. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce등을 많이 씁니다.