함수형 프로그래밍에서 함수는 순수 함수
순수 함수 (Pure function)
function add(x, y) {
return x + y;
}
add(10, 10); // 20
add(10, 10); // 20
순수 함수가 아닌 경우
let a = 10;
function add(x, y) {
return x + y + a;
}
add(10, 10); // 30
add(10, 10); // 30
a = 20;
add(10, 10); // 40
만약 a
가 상수라면..
const a = 10;
add(10, 10); // 30
add(10, 10); // 30
외부 상태값 a
가 변경될 일이 없다.
이 경우에는 add
함수는 리턴값이 항상 같으므로 순수함수.
let a = 10;
function add(x, y) {
a = y;
return x + y;
}
add(10, 20); // 20
add(10, 20); // 20
console.log(a); // 20
let obj1 = {
a: 10
};
function add(obj, x) {
obj.a += x;
}
add(obj1, 10);
console.log(obj.a); // 20
다시 순수 함수
function add(x, y) {
return x + y;
}
add(10, 10); // 20
add(10, 10); // 20
외부의 값을 변경하지 않고 값 변경..
let obj1 = {
a: 10
};
function add(obj, x) {
return { a: obj.a + x };
}
const obj2 = add(obj1, 10);
console.log(obj2.a); // 20