== (동등 연산자), === (일치 연산자)
- 값이 같으면 true, 다르면 false 반환
- 값이 같아도 타입이 다르면 자동 변환 후 비교
1 == '1' // true;
null == undefined // true;
- 값과 타입이 모두 같아야 true 반환
1 === '1' // false;
null === undefined // false;
얕은 복사와 깊은 복사는 객체를 복사할 때 참조(메모리 주소)만 복사할지, 실제 값까지 복사할지를 결정하는 방식
- 참조만 복사: 원본과 복사본이 같은 메모리 주소를 가리켜서 중첩된 배열이나 객체의 경우 한 단계만 복사
- 중첩 구조 영향: 복사본에서 원본의 하위 요소를 변경하면, 원본도 함께 바뀜
let arr = [1, 2, 3]; let copy = arr; copy.push(4);
console.log(arr);
// [1, 2, 3, 4]
- 값 자체를 복사: 중첩된 모든 객체와 배열까지 다 새 메모리에 복사
- 독립적 변화: 복사본에서 변경해도 원본에는 영향X
객체 '{ a: 1, b: { c: 2 } }'가 있을 때,
깊은 복사를 하면 'b' 속성도 새로운 객체로 복사되어 원본과는 독립적인 상태가 됨