// 불변 (immutable)
let list = [1, 2, 3];
// 1. 얕은 복사 (Shallow Copy) - '주소 값'을 복사,주소 값을 복사하기 때문에 참조하고 있는 실제 값은 같다
// let data = list;
// 2. 깊은 복사 (Deep Copy) - '실제 값'을 새로운 메모리 공간에 복사
let deepCopy = [...list]; // 전개연산자
deepCopy.push(4);
console.log("list",list);
console.log("deepCopy",deepCopy)
// 3. 추가 (append, prepend)
let appendList=[...list,4];
let prependList=[0,...list];
console.log("appendList",appendList);
console.log("prependList",prependList);
// 4. 찾기
let searchList = list.filter((n)=>n == 2);
console.log("searchList",searchList);
// 5.삭제
let deteleList = list.filter((n)=> n != 2);
console.log("deteleList",deteleList);
// 6. 수정
let updateList = list.map((n)=>{
if(n==2){
return n*10;
}else{
return n;
}
});
// let updateList = list.map((n)=> n==2 ? n*10 : n); <- 삼항연산자 사용
console.log("updateList",updateList)

1. 얕은 복사 (Shallow Copy)
- 객체를 복사할 때, 해당 객체만 복사하여 새 객체를 생성한다.
- 복사된 객체의 인스턴스 변수는 원본 객체의 인스턴스 변수와 같은 메모리 주소를 참조한다.
- 따라서, 해당 메모리 주소의 값이 변경되면 원본 객체 및 복사 객체의 인스턴스 변수 값은 같이 변경된다.
2. 깊은 복사 (Deep Copy)
- 객체를 복사 할 때, 해당 객체와 인스턴스 변수까지 복사하는 방식.
- 전부를 복사하여 새 주소에 담기 때문에 참조를 공유하지 않는다.
Share article