1) same input ➡️ same output
2) no side effects
🙅🏻♂️ 함수 밖의 스코프에 접근할 수 있다면 impure
// No Side Effects
const z = 1;
const sum = (x, y) => x + y + z;
console.log(sum(10, 20));
➡️ z의 값에 따라 결과가 달라지므로 impure 함수이다.
프로젝트를 생성하기 위해 impure함수도 당연히 필요하지만,
순수함수를 사용하면 다음과 같은 장점이 있다.
1) 특정 함수가 다른 함수에 미치는 예기치 못한 영향을 최소화
2) 함수가 어떤 결과값을 리턴할지 예측할 수 있다
따라서 가능하다면 가급적 pure함수로 만드는 것이 좋다.