함수형 프로그래밍 D1

nearworld·2023년 1월 8일
0

함수형 프로그래밍에서 함수는 순수 함수
순수 함수 (Pure function)

  • 부수 효과 X (Side effects): 사이드 이펙트는 함수 실행이 외부 상태를 변경하는 것을 의미하고 순수함수는 사이드 이펙트가 없는 함수다..
  • 인자에 대응하는 결과값이 항상 같다
function add(x, y) {
	return x + y;
}

add(10, 10); // 20
add(10, 10); // 20

순수 함수가 아닌 경우

  1. 외부 상태 변경에 의해 결과값이 달라지는 경우
let a = 10;
function add(x, y) {
  return x + y + a;
}

add(10, 10); // 30
add(10, 10); // 30

a = 20;
add(10, 10); // 40

만약 a가 상수라면..

const a = 10;
add(10, 10); // 30
add(10, 10); // 30

외부 상태값 a가 변경될 일이 없다.
이 경우에는 add 함수는 리턴값이 항상 같으므로 순수함수.

  1. 함수 내에서 외부 상태에 영향을 주는 경우
let a = 10;
function add(x, y) {
  a = y;
  return x + y;
}
add(10, 20); // 20
add(10, 20); // 20
console.log(a); // 20
let obj1 = {
  a: 10
};

function add(obj, x) {
  obj.a += x;
}
add(obj1, 10);
console.log(obj.a); // 20

다시 순수 함수

function add(x, y) {
	return x + y;
}

add(10, 10); // 20
add(10, 10); // 20

외부의 값을 변경하지 않고 값 변경..

let obj1 = {
  a: 10
};

function add(obj, x) {
  return { a: obj.a + x };
}

const obj2 = add(obj1, 10);
console.log(obj2.a); // 20
profile
깃허브: https://github.com/nearworld

0개의 댓글