순수함수란?
- 받은 인자 외에 다른 외부의 상태에 영향을 받지 않고, return값 외에는 외부와의 소통이 없는 함수입니다.
- 순수함수를 통한 함수형 프로그래밍을 할 경우 오류를 줄이고 안정성을 높일 수 있습니다.
부수효과란?
return값으로 결과를 만드는 것 외에 들어온 인자를 직접 변경하는 등 외부에 영향을 주는것입니다.
장점
- 코드 가독성이 높아집니다.
- 모듈화와 재사용성에 이점이 있습니다.
불변성이란?
- 상태를 변경하지 않는 것입니다.
- 이 때, 상태를 변경하지 않는다는 것은 단순한 변수의 재할당 뿐 아니라 메모리에 저장된 값 까지도 변경하지 않는 것을 뜻합니다.
장점
- 무분별한 상태의 변경을 막습니다.
즉, 상태변경의 추적이 쉽기 때문에 유지보수 등에 이점이 있습니다.
무분별한 상태의 변경?
만약 무분별하게 상태를 참조하거나 변경하는 경우 프로그램이 어떻게 돌아가는지 파악하기 힘들기 때문에 상태를 변경하는 행위에 특정한 규칙과 제약을 정하고 무분별한 상태 변화를 피하는 것입니다.
무분별한 상태의 변경는 대표적으로 전역 변수를 남용하는 것이 있습니다.
사이트이펙트란?
- 외부 변수를 참조하거나 변경하는 모든 종류의 코드를 의미합니다.
- 함수 내부에서
Ajax
, setTimeout
, console.log
등의 호출은 함수 내부를 벗어나 외부와 상호작용하기 때문에 사이드 이펙트가 있습니다.