함수형 프로그래밍에서 순수함수라는 것이 나온다.
순수함수는 말 그대로 순수한 함수다.
function add(a,b){
return a+b;
}
이것이 순수함수인가?
그렇다.
순수함수를 결정하는 조건이 몇가지가 있다.
첫번째로 항상 동일한 인자를 주면 항상 동일한 값을 리턴한다. 이다.
let c=20;
function add(a,b){
return a+b+c;
}
이것은 순수함수인가???
아니다.
조건 두번째로 부수효과가 없어야한다.
외부의 인자가 함수 안에서 변경이 되면 안된다.
c는 얼마든지 바꿀수 있다.
그럼 const 로 선언을 하면 될까?
const c=20;
function add(a,b){
return a+b+c;
}
이렇게 되면 add는 순수함수가 된다.
c는 절대로 바뀌지 않으니까 말이다.
객체의 경우도 보자.
let obj1={ val : 10 };
function add4(obj, b){
obj.val = obj.val+b;
}
이것도 역시 순수함수가 아니다.
obj1 객체의 val의 값이 바뀌기 떄문이다.
이걸 해결하려면 그냥 객체를 통째로 return 하면 된다.
이렇게 말이다.
let obj1={ val : 10 };
function add4(obj, b){
return { val : obj.val + b };
}
다음은 일급함수가 무엇인지 알아볼 것이다.
'Developer' 카테고리의 다른 글
오라클 DECODE (0) | 2020.07.24 |
---|---|
일급함수가 무엇? (0) | 2020.07.24 |
함수형 프로그래밍 (0) | 2020.07.24 |
프레임 워크와 라이브러리의 차이 (0) | 2020.07.24 |
디자인 패턴 종류 (0) | 2020.07.24 |