순수함수

Donghun Seol·2023년 3월 31일
0
/*
함수가 순수함수로 작동하기 위한 조건
1. 입출력 관련 코드가 없을 것
2. 몸통에서 매개변숫값을 변경시키지 않을 것
3. 함수 내부에 전역 변수나 정적 변수를 사용하지 않을 것
4. 함수가 예외를 발생시키지 않을 것
5. 함수 자체가 콜백함수로 구현되거나 내부에서 콜백을 호출하지 않을것
6. 함수 몸통에 Promise와 같이 비동기 방식으로 동작하는 코드가 없을 것
*/

function pure(a: number, b: number): number {
  return a + b;
}

function impure1(array: number[]): void {
  array.push(1);
  array.splice(0, 1);
}

let g = 10;
function impure2(x: number) {
  return x + g;
}

// readonly operator for pure function implementation
// 참조형 자료의 멤버 변수에 const효과를 주기위해서 readonly 사용한다.

// 전개연산자 활용해 배열을 복사하면 깊은 복사 가능함.
const oArr = [1, 2, 3, 4];
const oArrCopied = [...oArr];
oArr[0] = 99;
console.log(oArr);
console.log(oArrCopied);
profile
I'm going from failure to failure without losing enthusiasm

0개의 댓글