pure Function

김재우·2023년 4월 5일

pure function

목록 보기
1/1
post-thumbnail

깊은복사,얕은복사에 대해서는 어느정도 알고있는데, 함수형 프로그래밍에서의 순수함수, side-Effect 같은 부수함수에 대한 개념은 잘 모르고 있었다. 그래서 오늘은 순수함수가 뭔지 ? 그리고 side-Effect 가 발생하게 되면 어떤 부분이 문제가 생기는지에 대해서 공부를 해 봐야겠다.
그럼 오늘은 순수함수 + side Effect 에 대해서 톺아보자~

순수함수

  • 순수 함수란 동일한 인자를 넣었을 때 항상 동이한 리턴값을 반환하고 외부에 영향을 받지 않는 함수를 말한다.

부수효과 (side-effect)

  • 부수효과란 함수가 만들어진 목적과는 다른 효과 또는 부작용이다. 더 쉽게 말하면 함수에 예상할 수 없는 일이 생길 가능성이 존재한다면 부수효과를 가질 수 있는 함수가 된다.

부수효과가 존재하는 함수

// axios 통신을 하는 함수는 순수 함수가 될 수 없음.
const getUser= async()=>{
  
  const {data} = await axios.get("https://purefunction.url/user")
}
//파라미터를 직접 변경하는 함수는 순수 함수가 될 수 없음.
const changeProps = (arr,ele)=>{
arr.push(ele);
  return arr;
}
// 매개변수의 값을 직접 변경하는 불순함수

const num_arr =[1,2,3,4,5];

const addSixNumber=(arr)=>{
arr.push(6)
  return arr;
}

함수의 안팎에서 뭔가 예기치 않은 일이 생길 가능성이 있는 함수는 순수함수가 될 수 없다.
비동기 요청을 보내는 함수는 요청이 실패할 경우 받는 데이터가 달라지기 때문에 순수함수가 될 수 없고 매개변수로 들어온 값을 직접 변경하는 함수 역시 순수함수가 될 수 없다.

그럼 이번에는 순수함수의 코드를 보자.

순수함수

//매개변수를 복사한 값을 변경하는 순수함수
const addSixpure=(arr)=>{
let newArr = [...arr,6]
return newArr
}

마무리

공부를 하면서 드는 생각인데 순수함수는 매개변수를 복사해서 새로운 변수에다가 깊은복사를 하여 원시데이터의 불변성을 지켜주는 함수라고 생각이 들고, 부수함수는 매개변수에 직접 조작을 가하여 원시데이터의 불변성이 지켜지지 않는 함수라고 생각이 든다.

profile
프론트엔드 꾸준개발자입니다.

0개의 댓글