순수함수 ? 불변성 & 사이드 이펙트

졍이🥨·2023년 3월 1일
0

📝기술공부

목록 보기
6/40

순수함수

순수함수 란?
하나 이상의 인자를 받고, 인자를 변경하지 않고, 참조하여 새로운 값을 반환하는 함수
즉, 같은 input동일한 인자가 전달되면 항상 동일한 결과를 반환하는 함수(코드 블록)입니다.

예시
(1) 순수함수

// 매개변수를 복사한 값을 변경하는 순수함수
const addSixPure = (arr) => {
  // 펼침 연산자로 새로운 배열에 6 추가
  newArr = [...arr, 6];
  return newArr;
};

(2) 순수함수가 아닌 것

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

// 매개변수의 값을 직접 변경하는 불순함수
const addSixImpure = (arr) => {
  // 매개변수에 직접 6 추가
  arr.push(6);
  return arr;
};

사이드이펙트

사이드이펙트란?
함수 외부의 상태를 변경하는 것으로 변화를 예측할 수 없기 때문에 예기치 못한 오류를 발생시킬 가능성이 있습니다.

불변성

불변성이란?
메모리에 있는 값을 변경할 수 없는 것을 말한다. 자바스크립트의 데이터 형태중에 원시 데이터(숫자, 문자, 불리언등)는 불변성이 있고, 원시 데이터가 아닌 객체, 배열, 함수는 불변성 없다.

  • 불변성을 지킴으로써 얻을 수 있는 이점은 먼저 예기치 못한 사이드이펙트를 방지할 수 있다. 리액트에서 state를 직접 변경하지 않고 setState를 사용하는 것이 불변성을 지키는 방법이다.

<연관지어 요약>

순수함수란 동일한 입력에 대해 언제나 동일한 결과를 리턴하는 함수를 의미하며 그래서 사이드 이펙트를 일으키지 않는 함수를 의미합니다. 사이트 이펙트란 함수 외부의 상태를 변경하는 것으로 변화를 예측할 수 없기 때문에 예기치 못한 오류를 발생시킬 가능성이 있는데 이 때 불변성을 지키면 예기치 못한 사이드 이펙트를 방지할 수 있습니다.


💟 참고자료

순수함수/사이드이펙트/불변성

profile
Front-End :)

0개의 댓글