Record로 JS 호이스팅 이해하기
- 선언문이 마치 최상단에 끌어올려진 듯한 현상. 선언 이전에도 에러가 나지 않고 변수를 참조할 수 있다. => 자바스크립트 엔진이 먼저 전체 코드를 스캔하면서 변수와 같은 정보를 실행 컨텍스트 어딘가에 기록해놓기 때문 => 환경 레코드(Environment Record), 식별자와 식별자에 바인딩된 값을 기록
<변수 호이스팅>
- 생성 단계(Creation Phase) : 실행 컨텍스트 생성, 선언문만 실행해서 환경 레코드에 기록
- 실행 단계(Execution Phase) : 선언문 외 나머지 코드 순차적 실행, 환경 레코드를 참조하거나 업데이트
- 일시적 사각지대(Temporal Dead Zone) : let 또는 const로 선언했을 때 선언 이전에 식별자를 참조할 수 없는 구역
<함수 호이스팅>
- 함수 표현식 : 변수에 함수를 담아서 함수를 선언하는 방식 => 변수 호이스팅과 동일하게 동작
- 함수 선언문 : 선언과 동시에 함수가 생성되어 선언 전에도 함수를 사용할 수 있음
Outer로 JS 스코프체이닝 이해하기
- 외부 환경 참조(Outer Environment Reference) : 바깥 렉시컬 환경(정적 환경)을 가리킴
- 식별자 결정(Identifier Resolution) : 코드에서 변수나 함수의 값을 결정하는 것
- 변수 섀도잉 : 동일한 식별자로 인해 상위 스코프에서 선언된 식별자의 값이 가려지는 현상
- 스코프 체인 : 식별자를 결정할 때 활용하는 스코프들의 연결 리스트
실행 컨텍스트(Execution Context) 정리
- 코드를 실행하는 데 필요한 환경(코드 실행에 영향을 주는 조건이나 상태)을 제공하는 객체
- 코드를 실행할 때 식별자 결정을 더욱 효율적으로 하기 위한 수단
'공부 기록 > 영상 후기' 카테고리의 다른 글
[10분 테코톡] 멍토의 Blocking vs Non-Blocking, Sync vs Async (0) | 2023.04.10 |
---|---|
[10분 테코톡] 제이의 Spring AOP (0) | 2023.04.09 |
[10분 테코톡] 쿨라임의 HTTP/1.1, HTTP/2, 그리고 QUIC (1) | 2023.04.09 |
[10분 테코톡] 코일의 Web Socket (0) | 2023.04.09 |
[10분 테코톡] 디디의 Redis (0) | 2023.04.09 |