일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- webpack
- polyfill
- 자바스크립트의 클래스
- 호이스팅
- 자바스크립트 함수
- CORS
- 얕은 복사
- 로컬 스토리지
- 브라우저 렌더링원리
- CSS
- 프로미스
- 실행 컨텍스트
- react
- props와 state 차이점
- async/await
- 깊은 복사
- 리액트의 생명 주기
- undeclared
- MPA
- 클라이언트 사이드 렌더링
- 주소창에 naver 입력시 일어나는 일
- 스코프 체인
- 가상 dom
- 세션 스토리지
- 변수 생성 단계
- 이벤트 버블링
- 자바스크립트
- 리액트
- 서버 사이드 렌더링
- 이벤트 캡처링
Archives
- Today
- Total
Gapus Dev Blog
[자바스크립트] 호이스팅 본문
- JS파서 중 내부적으로 끌어올려지는 JS 특징이다.
- 컴파일 단계에서 var, let, const, function, class의 선언을 스캔하여 레티컬 환경이라는 메모리에 저장한다.
- 변수 생성 단계를 거치며 변수를 생성한다.
- 선언(Declaration) - 스코프와 변수 객체가 생성되고, 스코프가 변수 객체를 참조한다.
초기화 전까지는 TDZ(Temporal Dead Zone) 상태이다.- TDZ란? 초기화 전 메모리에 할당되지 않는 구간을 말하며, 참조 에러(ReferenceError)가 발생한다.
- 초기화(Initialization): 변수 객체 값을 위한 공간을 메모리에 할당한다. 이 때 할당되는 값은 undefined다.
- 할당(Assignment): 변수 객체에 값을 할당한다.
- 선언(Declaration) - 스코프와 변수 객체가 생성되고, 스코프가 변수 객체를 참조한다.
- var은 선언과 동시에 undefined로 초기화가 이뤄지며 TDZ이 없다.
- let, const는 선언을 하고 TDZ에 들어가며 초기화되지 않는 상태를 유지한다.
- 함수선언식은 호이스팅이 되고, 함수표현식은 호이스팅이 안된다.
- 클래스선언식은 호이스팅이 되지만 TDZ에 들어간다. 클래스표현식은 호이스팅이 안된다.
'프론트엔드 > JavaScript' 카테고리의 다른 글
[자바스크립트] null, undefined, undeclared, NaN (0) | 2023.10.22 |
---|---|
[자바스크립트] var, let, const 차이점 (0) | 2023.10.22 |
[자바스크립트] 조건문 (0) | 2023.01.10 |
[자바스크립트] 데이터타입 (0) | 2023.01.09 |
[자바스크립트] 객체 (2) | 2023.01.06 |