[JavaScript] 05. 불변성

서회정's avatar
Mar 31, 2025
[JavaScript] 05. 불변성

1. 불변성이란

📌
  • 기존 데이터를 직접 변경하지 않고 새로운 값을 생성하는 방식
  • 원본 데이터가 변경되지 않아 예측 가능한 코드 유지 가능

2. 배열의 불변성 유지하는 방법

✅ 1) 깊은 복사 (Deep Copy)

📌
  • 기존 배열을 변경하지 않고 새로운 배열을 생성
  • ... (전개 연산자) 사용
 

2) 요소 추가

  • 기존 배열을 변경하지 않고 새로운 배열을 생성
let appendList = [...list, 4]; // 뒤에 추가 let prependList = [0, ...list]; // 앞에 추가 console.log("appendList", appendList); // [1, 2, 3, 4] console.log("prependList", prependList); // [0, 1, 2, 3]
 

✅ 3) 요소 찾기 (filter)

  • 특정 값을 찾아서 새로운 배열로 반환
let searchList = list.filter((n) => n == 2); console.log("searchList", searchList); // [2]
 

✅ 4) 요소 삭제 (filter)

  • 특정 요소만 제외한 새로운 배열 생성
let deleteList = list.filter((n) => n != 2); console.log("deleteList", deleteList); // [1, 3]
 

5) 요소 수정 (map)

  • 특정 요소를 찾아 변경한 새로운 배열 생성
let updateList = list.map((n) => { if (n == 2) { return n * 10; } else { return n; } }); console.log("updateList", updateList); // [1, 20, 3]
💡 한 줄로 줄이기 (삼항 연산자 사용)
let updateList = list.map((n) => (n == 2 ? n * 10 : n));
 

불변성을 유지하는 이유

원본 데이터를 유지하면서 새로운 상태를 쉽게 관리할 수 있음
리액트(React)와 같은 라이브러리에서 상태 변경 감지에 유리
디버깅이 쉬워지고, 사이드 이펙트 방지
 
Share article

clubnerdy