
깊은복사,얕은복사에 대해서는 어느정도 알고있는데, 함수형 프로그래밍에서의 순수함수, 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
}
공부를 하면서 드는 생각인데 순수함수는 매개변수를 복사해서 새로운 변수에다가 깊은복사를 하여 원시데이터의 불변성을 지켜주는 함수라고 생각이 들고, 부수함수는 매개변수에 직접 조작을 가하여 원시데이터의 불변성이 지켜지지 않는 함수라고 생각이 든다.