TIL

2주차 수요일 TIL

news0516 2024. 11. 6. 20:24

1. 깊은 복사와 얕은 복사
얕은 복사 (Shallow Copy): 객체의 최상위 속성만 복사하고, 중첩된 객체는 원본과 같은 참조를 공유함.
따라서 하위 객체에 변경점 적용 시 원본 객체에 영향이 있을 수 있다.

깊은 복사 (Deep Copy): 중첩된 객체까지 모두 복사하여 원본과 독립적인 새로운 객체 생성.
 깊은 복사를 통해 모든 중첩된 객체도 새로운 메모리 공간에 복사되므로, 원본 객체와 완전히 독립적인 상태를 유지
최상위 객체와 독립적으로 변경점 적용이 가능하다

2. 전개 연산자
전개 연산자: 객체나 배열의 얕은 복사를 수행할떄 적합. 최상위 속성만 복사하고, 중첩된 객체는 참조 공유.
예시: const newObject = { ...originalObject };

3. for...in 구문
객체의 모든 속성에 접근할 수 있음.
얕은 복사: 최상위 속성만 복사할 때 사용.
깊은 복사: 재귀 호출을 통해 중첩된 객체의 속성을 복사할 때도 사용 가능.
javascript

const shallowCopy = {};
for (const key in originalObject) {
    shallowCopy[key] = originalObject[key];
}


4. 불변성 유지
불변성: 데이터가 한 번 생성되면 변경되지 않도록 하여 상태 관리의 예측 가능성을 높임.
중첩된 객체의 경우 깊은 복사를 통해 불변성을 유지하는 것이 필요.

5. 상태 관리
게임 개발에서 객체의 상태를 외부 입력에 따라 변경할 때 깊은 복사를 사용하여 원본 객체와의 독립성을 확보하는 것이 중요.


실행 컨텍스트 (Execution Context)
코드 실행 시 생성되는 환경으로, 변수 및 함수에 대한 정보를 포함.

2. 렉시컬 환경 (Lexical Environment, LE)
실행 컨텍스트의 구성 요소로, record(식별자 정보)와 outer(외부 환경 정보)를 포함.
변경사항을 실시간으로 반영.

3. 호이스팅 (Hoisting)
변수와 함수 선언이 최상단으로 "끌어올려지는" 현상.
호이스팅 법칙
변수 호이스팅: 변수를 선언하기 전에 사용 가능 (undefined로 초기화).
함수 선언 호이스팅: 함수 선언은 최상단으로 이동하여 정의 이전에 호출 가능.

4. 함수 표현식
호이스팅되지 않으므로 정의된 위치에서만 호출 가능.
협업 시 코드의 명확성, 순서를 지키는데 도움.


5. 스코프 체인 (Scope Chain)
변수 접근을 위해 상위 렉시컬 환경을 참조하는 구조.
함수 내에서 외부 함수의 변수를 접근 가능.

예시 코드 실행 흐름
함수 a 내에서 b가 호출되고, b는 a의 변수를 접근하는 구조.

전역 컨텍스트 → a 함수 실행 (a-in) → b 함수 실행 (b-in) → 변수 출력 → b 종료 (b-out) → a 종료 (a-out).

'TIL' 카테고리의 다른 글

내일배움캠프 3주차 월요일 TIL  (0) 2024.11.11
내일배움캠프 2주차 금요일  (1) 2024.11.08
2주차 화요일 TIL  (0) 2024.11.05
2주차 월요일 TIL  (0) 2024.11.04
1주차 금요일 TIL  (1) 2024.11.01