함수형 프로그래밍의 한부분이며 두가지 규칙을 갖고 있음
1️⃣ 같은 입력 값 주어졌을 때 언제나 같은 결괏값 리턴
◽ 같은 입력 ➡ 같은 출력순수한 예시 (✅) :
function add(x, y) { return x + y; } add(2, 3); // 항상 5 add(2, 3); // 또 5입력이 2와 3이면 항상 5 리턴함 → ✅ 순수함수 조건 충족!
순수하지 않은 예시 (❌) :
let randomBoost = Math.random(); function addWithRandom(x) { return x + randomBoost; } addWithRandom(2); // 실행할 때마다 결과가 다름!
Math.random()처럼 외부 요인 때문에 결과 달라지면 순수함수❌
2️⃣ 사이드 이펙트를 만들지 않음
- 사이드 이펙트란❓
➡ 함수가 외부 세계를 변경하거나,
외부 세계에 영향을 주는 것순수한 예시 (✅) :
function multiply(x, y) { return x * y; }외부에 영향을 안 줘 → 결과만 리턴함
순수하지 않은 예시 (❌) :
let count = 0; function increase(x) { count++; // 외부 상태(count)를 바꿈 ❌ return x + 1; }외부 변수
count를 바꿈 → ❌ 사이드 이펙트 발생
const add = (x, y) => x + y;
console.log(add(11, 20)); // 31
const fullName = (first, last) => `${first} ${last}`;
console.log(fullName("John", "Doe")); // John Doe
const z = 1;
const sum = (x, y) => x + y + z;
console.log(sum(10, 20));
let x = 0;
const numberUp = () => x += 1; // x = x + 1
console.log(numberUp()); // 1
console.log(x); // 1
let x = 0;
const pureNumberUp = (num) => num += 1;
console.log(pureNumberUp(x)); // 1
console.log(x); // 0
const alphabetArray = ['A', 'B'];
const addItemToArray = (originalArray, newItem) => {
originalArray.push(newItem);
return originalArray;
}
console.log(addItemToArray(alphabetArray, 'C'));
console.log(alphabetArray);

const alphabetArray = ['A', 'B'];
const pureAddItemToArray = (originalArray, newItem) => {
return [...originalArray, newItem]
}
console.log(pureAddItemToArray(alphabetArray, 'C')); // ['A', 'B', 'C']
console.log(alphabetArray); // ['A', 'B']