말랑말랑 LAB

[JavaScript] 순수 함수 본문

JavaScript/함수형 프로그래밍

[JavaScript] 순수 함수

쭈02 2018. 12. 19. 10:31

자바스크립트의 순수 함수



- 순수 함수란?

  • 언제 실행해도 항상 동일한 결과를 리턴
  • 평가 시점이 중요하지 않다 --> 즉, 평가 시점을 개발자가 다룰 수 있다
  • 조합성을 강조할 수 있다 --> 함수를 다른 함수의 인자로 넘기거나, 서로 다른 스레드나 공간에서 함수를 평가시켜도 항상 동일한 결과를 반환하기 때문에 안전하고 다루기 쉬운 함수가 된다
  • 평가 시점을 다루는 것을 통해 다양한 로직을 만들기 위함





- 순수함수가 아닌 함수

  • 평가 시점이 중요
  • 평가 시점에 따라 로직이 정해지고 결과값이 달라진다
  • 아래 예제를 보면 c 값이 변경되는 시점에 따라 함수 실행 결과가 달라짐을 알 수 있다



  • 부수 효과가 있는 함수는 순수함수가 아니다

    • 외부 상태에 영향을 미치므로



  • 인자로 들어온 값의 상태를 직접 변경하는 함수 또한 순수함수가 아니다



  • 그런데 종종 객체 값을 변경해야할 경우가 있다..

  • 이를 순수함수로 만들어 사용하려면 다음과 같이 새로운 객체를 만들어 리턴해야 한다








'JavaScript > 함수형 프로그래밍' 카테고리의 다른 글

[JavaScript] _each 의 외부 다형성 높이기  (0) 2019.01.02
[JavaScript] pipe 함수, go 함수  (0) 2018.12.26
[JavaScript] reduce 함수  (0) 2018.12.25
[JavaScript] 커링  (0) 2018.12.24
[JavaScript] 일급 함수  (0) 2018.12.20
Comments