간단 결론 : 외부 요인에 의해서 return 값이 변하지 않는 경우를 순수함수라고 한다.
1.순수함수 조건
- 동일한 인자가 들어갈 경우 항상 같은 값이 나와야 한다.
- 부수적인 효과가 일어나면 안 된다.
- return 값으로만 소통한다.
- 순수함수는 평가 시점이 중요하지 않다.
만약 순수함수가 아니라면 동일한 인자를 넣어도 다른 값이 나오는 경우 어떠한 시점에서 함수를 평가할지가 굉장히 중요한데 순수함수는 동일한 인자를 넣으면 항상 같은 값이 나오기 때문에 굳이 평가시점을 따질 필요가 없다.
순수함수
function add(a, b) {
return a + b;
}
console.log(add(10, 5));
console.log(add(10, 5));
console.log(add(10, 5));
순수함수가 아닌 경우
let c = 10;
function add2(a, b) {
return a + b + c;
}
console.log(add2(5,5)) // 20
c = 15
console.log(add2(5,5)) //25
항상 동일한 인자가 들어가도 c값에 따라서 결괏값이 달라질수 있다.
let c = 20;
function add3(a, b) {
c = b;
return a + b;
}
console.log('c: ', c);
console.log(add3(20, 30));
console.log('c: ', c);
부수적인 효과가 일어난다.
부수적인 효과 -> 함수에서 외부의 변수의 값을 변경하거나 들어온 인자의 값을 변화시키는 경우
let obj1 = { val: 10 };
function add4(obj, b) {
obj.val += b;
}
console.log(obj1.val); //10
add4(obj1, 20);
console.log(obj1.val); //30
return 값도 없고 마찬가지로 외부의 값을 함수 내부에서 변경하는 부수효과가 일어난다.
출처 : velog.io/@chdb57/%E3%85%87%E3%85%87%E3%85%87%E3%85%87%E3%85%87%E3%85%87%E3%85%87%E3%85%87
'Dev-Basic > Programming' 카테고리의 다른 글
[재귀함수] 1-100 합계 구하기 (1) | 2023.11.01 |
---|---|
[Algorithm] 알고리즘 학습 순서 & 방법 & 참고자료 링크 기록 (0) | 2021.09.09 |
[방법론] Scaffolding 스케폴딩 (0) | 2021.04.16 |
[Basic] Scaffold 개발 기법 (0) | 2021.02.15 |
[Basic] 비즈니스 로직과 View의 차이 (0) | 2021.02.09 |
Rest API 작성 방법 (0) | 2021.01.12 |
댓글