ibm x redhat ai 과정 JS
스프레드(Spread) 구문 이란?
스프레드 구문(...)은 배열이나 객체와 같이 반복 가능한(iterable) 데이터를 하나씩 펼쳐서(Unpack) 개별 요소로 만드는 역할을 합니다.
배열 펼치기: console.log(...ary)는 1, 2, 3... 처럼 값을 낱개로 출력합니다.
나머지 매개변수 (Rest): const [a, ...c] = ary2; 처럼 구조 분해 할당 시 남은 요소들을 다시 배열로 묶을 때도 사용합니다.
배열/객체 결합: const ary6 = [...ary3, ...ary4]; 처럼 여러 데이터를 하나로 합칠 때 유용합니다.
<script>
//JSON(자바스크립트 객체 표기법)
const pro={
age: 22
}
//분할대입
const {age} = pro;
console.log(age);
//객체 분할 대입
const{age2=33}=pro;
console.log(age2);
//... 스프레드(spread)구문: 배열 내부의 값을 순서대로 펼친다
const ary=[1,2,3,4,5,6,7,8];
console.log(ary);
console.log(...ary); //배열 안의 값만 결과로 출력
const ary2 = [1, 2, 3, 4, 5];
const [a, ...c] = ary2; //배열에서 남은 요소를 변수에 담을 때 스프레드 구문 활용
console.log(a); // 출력: 1
console.log(c); // 출력: [2, 3, 4, 5]
const[a1,b1,c1,d1,e1]=ary2;
console.log(e1); //5
</script>
얕은 복사 (Shallow Copy) vs 깊은 복사 (Deep Copy)
복사를 이해할 때 가장 중요한 것은 "데이터가 저장된 메모리 주소(참조값)"를 복사하느냐, 아니면 "값 자체"를 새로운 공간에 복사하느냐의 차이입니다.
<script>
const ary3=[10,20];
const ary4 = [30,40];
const ary5=[...ary3]; //얕은 복사(객체의 참조값=주소값을 복사함)
console.log(ary3);
console.log(ary5);
ary5[0] = 100;
console.log(ary3);
console.log(ary5);
//스터디: 얕은복사/ 깊은복사 정리
const ary6=[...ary3, ...ary4];
console.log(ary6)
///////////
//...스프레드(spread)구문 : interable구조(배열, 객체, )
const obj={
v1:10,
v2:20
}
const obj2={
v3:30,
v4:40
}
const obj3 = {...obj}
console.log(obj3);
//obj,obj2 다 펼쳐서 obj4에 저장 후 출력
obj4={...obj, ...obj2};
console.log(obj4);
//ary8에 ary3을 얕은복사해서 저장
const ary8 = [...ary3];
ary8[0]=100; //스프레드 구문 사용하면 -> 완전한 새로운 배열 생성-> 기존 배열에 영향 안줌.
console.log(ary8);
console.log(ary3);
</script>
const deepCopy = structuredClone(original); 등을 사용하여 연결 고리 완전히 끊음