• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

순수함수

20.03.24 16:53 작성 조회수 144

0

add2가 순수함수가 아니면 add5도 순수함수가 아닌거 아닌가요? add5도 obj1.val 값이 바뀌면 리턴값도 변하니까요..

답변 1

답변을 작성해보세요.

5

안녕하세요 :) 질문 감사합니다.

add5는 순수함수가 맞습니다. 해당 값이 인자로 들어오는 값이기 때문입니다.

인자로 들어오는 값, 내부에서 선언된 값만을 사용하고, 외부의 값에 영향을 주지 않는 함수는 순수함수입니다.

말씀하신대로 obj1의 값이 바뀌면 다른 값이 나오는 데, 이는 add5라는 함수 입장에서는 당연한 것 입니다.

'다른 값'이 왔기 때문입니다.

또한 add5가 순수함수인데에는 외부의 값을 변경하지 않고, 참조만 한 다음, 새로운 값을 만들어서 리턴한다는 것에 방점을 찍어서 보시는게 좋습니다.

obj1 역시 불변적으로 사용하면 좋겠지만, 만일 그렇지 않는다고 하더라도, add5의 입장에선 인자로 들어오는 값에만 의존하기 때문에 add5 자체는 순수 함수입니다. 

obj1의 값을 직접 변경하는건 add5와는 연관이 없습니다. 

감사합니다 ^^