Ajax
, setTimeout
, console.log
등의 호출이 모두 사이드 이펙트이다.Ajax
나 setTimeout
과 같은 함수들은 브라우저 API
를 사용하는 일이고, console.log는 브라우저의 콘솔창에 문자열을 출력하는 함수이기 떄문이다.사이드 이펙트는 코드를 읽기 힘들게 만든다. 동일한 인풋임에도 불구하고 상황에 따라 결과가 달라질 수 있기 때문에 이게 왜 이런 결과가 만들어졌는지 이곳 저곳을 살펴야 할 수 있다. 이말은 즉, 코드를 유지보수하기 어렵게 만든다는 말과도 같다.
<aside> 💡 순수함수는 컨텍스트와 관계없이 동작하기 때문에 가독성이 좋다.
단지 필요한 값들을 매개변수로 받을 뿐이며, 어플리케이션의 상태를 필요로하지 않는다.
</aside>
순수함수는 같은 인풋엔 같은 결과가 나오기 때문에 단위 테스트를 작성하기가 다른 함수에 비해 간편하다.