순수 함수란?

hana jeong·2023년 4월 5일
0

순수함수는 같은 입력값을 받으면 항상 같은 결과를 리턴하고 함수 외부에 영향을 끼치지 않는 함수를 말한다
예를 들면 다음과 같다

const multiply = (a,b) => {
	return a * b
}

let numberOne = 5;
let numberTwo = 2;
let total = sum(numberOne * numberTwo);

console.log(numberOne) // 5
console.log(numberTwo) // 2
console.log(total) // 10

위와 같이 multiply 함수는 인자로 받은 값을 변경하지 않는 순수함수다
즉 numberOne, numberTwo가 함수에 전달되고 나서도 그 값은 유지가 되고, multiply 함수는 항상 같은 결과를 반환한다. 결과적으로 multiply 함수는 인자로 받은 값의 불변성을 유지한다

또한 순수 함수는 함수가 호출될 때 외부 상태를 변경하거나 외부 상태에 의존하지 않는다. 따라서 다른 코드에 영향을 받지 않는다.(즉 순수 함수는 사이드 이펙트가 없다)

만약 위의 코드를 사이드 이펙트가 있는 함수로 바꿔 본다면 다음과 같을 것이다

let count = 0;
const multiply = (a,b) => {
	count++
    return a * b
}

위의 함수는 외부에 있는 변수 count의 값을 변경한다 즉 외부의 상태를 변경하는 것이다
때문에 같은 argument를 입력해도 다른 결과를 리턴할 수 있기 때문에 코드를 이해하고 테스트하기 어렵다

그렇다면 순수 함수는 왜 사용할까?
같은 입력에 대해 항상 같은 출력을 리턴하기 때문에 테스트와 디버깅이 쉽고 예측 가능한 코드를 작성할 수 있습니다. 또한 코드가 간결하고 외부 코드에 영향을 받지 않기 때문에 재사용 가능하다.
따라서 순수 함수는 주로 비즈니스 로직 등 순수한 계산을 수행하는 함수에서 사용된다.

profile
https://developer-hh.tistory.com 로 옮깁니다

0개의 댓글