함수형 프로그래밍에서는 어떤 외부 상태에 의존하지도 않고 변경하지도 않는, 즉 부수 효과가 없는 함수를 순수 함수(pure function)라고 한다.
반대로 외부 상태에 의존하거나 외부 상태를 변경하는, 즉 부수 효과가 있는 함수는 비순수 함수(impure function)라고 한다.
순수 함수는 동일한 인수가 전달되면 언제나 동일한 값을 반환하는 함수다.
어떤 외부 상태(전역 변수, 서버 데이터, 파일, console, DOM 등)에도 의존하지 않고, 오직 매개변수를 통해 함수 내부로 전달된 인수에게만 의존해 값을 생성해 반환한다.
순수 함수는 일반적으로 하나 이상의 인수를 전달받고, 인수를 변경하지 않는 것이 기본이다.
다시말해, 순수 함수는 인수의 불변성을 유지한다.
함수가 외부 상태를 변경하면 상태 변화를 추적하기 어려워진다.
따라서 함수 외부 상태의 변경을 지양하는 순수함수를 사용하는 것이 좋다.
함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성을 지향하는 프로그래밍 패러다임이다.
오류 발생의 근본적 원인을 지양
불변성(Immutability)
순수함수는 함수가 호출되기 전의 상태를 변경하지 않는다.
즉, 함수 내부에서 상태를 변경하는 사이드 이펙트가 없어야 한다.
이는 함수의 입력과 출력이 독립적으로 관리되어야 함을 의미한다.
사이드 이펙트 없음(No side effects)
순수함수는 함수의 실행이 외부의 상태를 변경하지 않아야 한다.
즉, 함수가 호출되었을 때 함수 외부의 상태가 변경되어서는 안되며, 이는 함수의 실행이 시스템이나 다른 부분에 영향을 미치지 않고 격리된 상태에서 동작함을 의미한다.
순수 함수의 장점은 불변성과 사이드 이펙트가 없다는 것으로 인해 예측 가능하고, 안정적인 동작을 가지며, 디버깅이 쉽고 테스트에 용이하며, 코드의 재사용성이 높아진다는 점입니다. 또한, 순수 함수는 다양한 환경에서 동작할 수 있어서 유연성이 높아지고, 부작용이 없기 때문에 코드의 의도가 명확하게 드러나고, 예측 가능한 동작을 가지기 때문에 코드의 가독성이 향상됩니다. 이를 통해 코드의 유지보수성과 확장성을 높이는데 도움이 됩니다. 또한, 순수 함수는 함수형 프로그래밍 패러다임의 중요한 개념으로, 함수의 독립성과 모듈화를 높여 코드의 복잡성을 감소시키고, 개발자들의 생산성을 향상시키는 장점이 있습니다.
결론적으로, 순수 함수는 예측 가능하고 안정적인 코드를 작성할 수 있게 도와주며, 코드의 유지보수성과 재사용성을 향상시키는 많은 장점을 가지고 있습니다.
순수 함수란 동일한 입력에 대해 항상 동일한 출력을 반환하는 함수로, 외부에 어떠한 영향도 미치지 않는(no side effects) 함수를 말합니다. 또한 함수가 호출되기 전의 상태를 변경하지 않아야 합니다. 이를 불변성(immutability)이라고 합니다. 즉, 함수의 실행이 외부의 상태를 변경하지 않고, 입력에만 의존하여 출력을 계산하는 함수를 순수 함수라고 할 수 있습니다.
모던 자바스크립트 12.7.5 순수 함수와 비순수 함수
chat GTP