순수 함수

김형진·2024년 8월 12일
post-thumbnail

함수형 프로그래밍 페러다임의 한부분

  • 같은 입력 값이 주어졌을 때, 언제나 같은 결괏값을 리턴한다.
  • 사이트 이펙트를 만들지 않는다.

사용 이유

  1. 클린 코드를 위해

  2. 테스트를 쉽게 하기 위해

  3. 디버그를 쉽게 하기 위해

  4. 독립적인 코드를 위해

  5. same input ⇒ same output

const add = (x, y) => x + y;
console.log(add(10, 20));//30

const fullName = (firstName, lastName) => `${firstName}${lastName}`;
console.log(fullName("John", "Ahn"));//JohnAhn
  1. No Side Effects
const z = 1;
const sum = (x, y) => x + y + z;
console.log(sum(10, 20));//31

함수 밖에 스코프에 접근하는 것도 이 함수를 impure함수로 만든다.

실습 1

let x = 0;
const numberUp = () => (x += 1);
console.log(numberUp());//1
console.log(x);//1

impure 함수

순수 함수로 제작

let x = 0;
const numberUp = (num) => (num += 1);
console.log(numberUp(x));//1
console.log(x);//0

실습 2

const arr = ["A", "B"];
const addItemarr = (originalArr, newItem) => {
  originalArr.push(newItem);
  return originalArr;
};
console.log(addItemarr(arr, "C"));//[ 'A', 'B', 'C' ]
console.log(arr);//[ 'A', 'B', 'C' ]

순수 함수

const arr = ["A", "B"];
const addItemarr = (originalArr, newItem) => {
  return [...originalArr, newItem];
};
console.log(addItemarr(arr, "C"));//['A', 'B', 'C' ]
console.log(arr);//['A','B']

0개의 댓글