3주차 위클리 페이퍼 안내
아래 두 가지 주제에 대해서 각자 조사해서 답변을 제출해 주세요.

자바스크립트에서 == 와 === 가 어떻게 다른지 설명해 주세요.
자바스크립트에서 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)에 대해 설명해 주세요.

  1. ==와 ===의 차이:
    ==는 등호 양쪽의 값이 동등한지 비교합니다. 자동으로 형 변환을 수행하며, 값이 같으면 true를 반환합니다.

javascript
Copy code
1 == '1'; // true (숫자 1과 문자열 '1'은 값이 같다고 판단)
===는 일치 연산자로, 값과 형(type)이 완전히 같은지 비교합니다. 형 변환을 수행하지 않으며, 값과 형이 동시에 일치해야 true를 반환합니다.

javascript
Copy code
1 === '1'; // false (형이 다르므로 false)
2. 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy):
얕은 복사(Shallow Copy):

객체를 복사할 때, 원본 객체의 내부에 있는 객체는 참조로 복사되어 같은 객체를 가리키게 됩니다.
Object.assign()이나 전개 연산자(...)를 사용하여 얕은 복사를 수행합니다.
javascript
Copy code
const original = { a: 1, b: { c: 2 } };
const shallowCopy = { ...original };

console.log(original.b === shallowCopy.b); // true (내부 객체는 참조로 복사)
깊은 복사(Deep Copy):

객체를 복사할 때, 원본 객체 내부의 모든 객체까지 새로운 객체로 복사합니다.
주로 재귀적인 방법이나 라이브러리(예: lodash의 _.cloneDeep())를 사용하여 깊은 복사를 수행합니다.
javascript
Copy code
const original = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));

console.log(original.b === deepCopy.b); // false (깊은 복사로 인해 새로운 객체가 생성)
주의사항:

깊은 복사는 모든 경우에 적합하지 않을 수 있고, 성능 문제 및 함수 등이 보존되지 않을 수 있습니다. 따라서 상황에 따라 얕은 복사 혹은 다른 방법을 사용하는 것이 중요합니다.

profile
개발 공부

0개의 댓글