Dev-Basic/Programming

순수 함수가 뭘까?

yoonjong Park 2021. 1. 18.

간단 결론 : 외부 요인에 의해서 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

댓글