본문 바로가기
Computer Science/JavaScript

자바스크립트 Chapter 20 Pure Functions, Side Effects and State Mutation

by Write and Remember 2019. 5. 14.

 

모든 자바스크립트 개발자가 알아야 하는 33가지 개념

 

Chapter 20 Pure Functions, Side Effects and State Mutation

 

Pure Functions부터 살펴보자.

 

Pure Functions

 

순수 함수의 정의는

 

동일한 인수가 전달되면, 항상 동일한 결과를 반환한다.

 

프로그램 실행중에는 상태나 데이터에 의존하지 않고

 

입력 인수에만 의존해야한다.

 

또한 side effects(네트워크 요청, 데이터 변이 등)을 유발하지 않는다.

 

사이드 이펙트(side effects)를 좀 더 살펴보면,

 

함수 밖의 변수를 변경하는 것부터 

 

함수 내에서 다른 메서드를 호출하는 것까지 될 수 있고

 

HTTP 요청

 

데이터 변이

 

화면 또는 콘솔로 출력

 

DOM 쿼리 / 조작

 

Math.random()

 

현재 시간 얻기

 

Pure Functions 예제

 

function priceAfterTax(price) {
  return (price * 0.2) + price;
}

 

외부 입력에 의존하지 않고

 

데이터를 변경하지 않으며 side effects가 없다.

 

Impure Functions 예제

 

const tax = 10;

function calculateTax(price) {
  return (price * (tax/100)) + price;
}

 

외부 변수에 의존하고 있으므로 Impure Functions이다.

 

Pure Functions가 중요한 이유는

 

Functional Programming에서 많이 사용되기 때문이다.

 

마지막으로 State Mutation을 살펴보자.

 

Immutable value(불변 값)은 생성되면 변경될 수 없는 값을 의미한다.

 

자바스크립트에서는 숫자, 문자, 부울과 같은 기본 값은 변경되지 않는다.

 

그러나 객체 및 배열과 같은 데이터 구조에서는 그렇지 않다.

 

상태 변이(State Mutation)란 소스 요소를 변경하거나 영향을 주는 것을 의미한다.

 

Mutation은 side effects이기도 하다.

 

변이(Mutation)가 없을수록 프로그램은 단순해진다.

댓글0