[JavaScript] 순수 함수와 참조 투명성

최대 1 분 소요

1. 순수 함수

  • 순수 함수란, 부수 효과(side effect)가 없는 함수를 말한다. 여기서 말하는 부수 효과란, 함수가 만들어진 목적과 다른 효과 또는 부작용을 말한다. 예상할 수 없는 일이 생길 가능성이 존재한다면, 해당 함수는 부수효과를 가질 수 있는 함수가 된다.
  • 순수 함수는 동일한 인자를 주었을 때 항상 같은 값을 리턴하며, 외부 상태를 변경하지 않아야 한다.
  • 같은 파라미터를 전달해 항상 같은 결과값을 얻기 위해서는, 외부의 값을 참조하지 않아야 한다.(수학에서 사용되는 함수의 의미와 같다.)
  • 순수 함수 내부에서 순수 함수를 호출하는 경우도 순수 함수의 조건에 위배되지 않는다.(Is a nested pure function still a pure function?)


2. 참조 투명성

  • 함수 입력 표현식을 그 결과로 치환해도 함수 작동에 문제가 없다면, 함수를 참조 투명하다고 한다.
  • 큰 의미에서 보면, 함수가 같은 파라미터에 한해 언제나 같은 리턴값을 보장하는 순수 함수의 특징과 같다.
  • 예를 들어, 아래 표현식 area(3) + area(4)의 결과는, 그 결과로 치환된 Math.PI * Math.pow(3, 2) + Math.PI * Math.pow(4, 2)와 같다. 이런 특징을 참조 투명성이라고 한다.

    http://dl.dropbox.com/s/mgza4p3rul206fn/JavaScript-%EC%88%9C%EC%88%98%20%ED%95%A8%EC%88%98%EC%99%80%20%EC%B0%B8%EC%A1%B0%20%ED%88%AC%EB%AA%85%EC%84%B1-1.png

카테고리:

업데이트:

댓글남기기