함수형 프로그래밍 페러다임의 한부분
사용 이유
클린 코드를 위해
테스트를 쉽게 하기 위해
디버그를 쉽게 하기 위해
독립적인 코드를 위해
same input ⇒ same output
const add = (x, y) => x + y;
console.log(add(10, 20));//30
const fullName = (firstName, lastName) => `${firstName}${lastName}`;
console.log(fullName("John", "Ahn"));//JohnAhn
const z = 1;
const sum = (x, y) => x + y + z;
console.log(sum(10, 20));//31
함수 밖에 스코프에 접근하는 것도 이 함수를 impure함수로 만든다.
실습 1
let x = 0;
const numberUp = () => (x += 1);
console.log(numberUp());//1
console.log(x);//1
impure 함수
순수 함수로 제작
let x = 0;
const numberUp = (num) => (num += 1);
console.log(numberUp(x));//1
console.log(x);//0
실습 2
const arr = ["A", "B"];
const addItemarr = (originalArr, newItem) => {
originalArr.push(newItem);
return originalArr;
};
console.log(addItemarr(arr, "C"));//[ 'A', 'B', 'C' ]
console.log(arr);//[ 'A', 'B', 'C' ]
순수 함수
const arr = ["A", "B"];
const addItemarr = (originalArr, newItem) => {
return [...originalArr, newItem];
};
console.log(addItemarr(arr, "C"));//['A', 'B', 'C' ]
console.log(arr);//['A','B']