요약
비순수함수는 외부상태를 변경하므로 상태 변화를 추적하기 어려워진다.
따라서 함수 외부상태의 변경을 지양하는 순수함수를 사용함이 좋다.
순수함수 : 외부상태에 의존하지 않고 외부상태를 변경하지 않음. 즉 부수효과가 없다.
비순수함수 : 외부상태에 의존하거나 외부상태를 변경함. 즉 부수효과가 있다.
부수효과란 외부 상태를 변경하거나, 함수가 받은 인자의 상태를 변경시키는 것.
순수함수
var count = 0; // 현재 카운트를 나타내는 상태
// 순수 함수 increase는 동일한 인수가 전달되면 언제나 동일한 값을 반환한다.
function increase(n) {
return ++n;
}
// 순수 함수가 반환한 결과값을 변수에 재할당해서 상태를 변경
count = increase(count);
console.log(count); // 1
count = increase(count);
console.log(count); // 2
외부 상태에 의존하지 않고, 외부 상태를 변경하지도 않는다.
= 동일한 인수가 전달되면 동일한 값을 반환한다.
비순수함수
var count = 0; // 현재 카운트를 나타내는 상태: increase 함수에 의해 변화한다.
// 비순수 함수
function increase() {
return ++count; // 외부 상태에 의존하며 외부 상태를 변경한다.
}
// 비순수함수는 외부 상태 `count`를 변경하므로 상태 변화를 추적하기 어려워진다.
increase();
console.log(count); // 1
increase();
console.log(count); // 2
외부 상태(count)에 의존하며 또한 외부상태를 변경한다. 부수효과 발생.
'항해99 > 4주) Node.js 숙련' 카테고리의 다른 글
| 항해99 4주차 WIL ORM, noSQL vs SQL (0) | 2022.06.05 |
|---|---|
| 아키텍쳐 패턴, Hexagonal Architecture, DDD, Onion Architecture... (0) | 2022.06.01 |
| 220601 기술매니저님 튜터링 이후 고민 해결 (0) | 2022.06.01 |
| 좋아요 기능? 설계 (0) | 2022.06.01 |
| 항해99 4주차 중 / 튜터링 질문 "현재의 우선순위" (0) | 2022.06.01 |