Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 항해99추천
- NextJS v13
- 알고리즘
- 중복선택
- 항해99솔직후기
- 부트캠프항해
- greedy
- 백준
- 동전 0
- 탐욕알고리즘
- 프로그래머스
- server component
- 항해99후기
- 실전프로젝트
- react
- 서버 컴포넌트
- 날씨 api
- 항해99
- 중복카테고리
- jQuery
- 자바스크립트
- JavaScript
- 그리디
- 숫자를 별점으로
- db수정
- 카테고리필터
- 로딩 후 실행
- 배열 중복 제거
- 배열 메소드
- 클라이언트 컴포넌트
Archives
- Today
- Total
공부 및 일상기록
[Javascript] 호이스팅이란? 본문
호이스팅이란 코드가 실행하기 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어올려진것 같은 현상을 말합니다. 호이스팅이 발생하는 이유는 자바스크립트 엔진은 코드를 실행하기전 실행컨텍스트가 생성되는데 이 실행컨텍스트는 코드를 원활하게 실행될 수 있도록 환경을 만들어주는 역할입니다.
실행 컨텍스트는 생성단계와 실행단계 두가지로 나눠볼수있습니다.
생성단계
선언문만 실행해서 환경레코드에 기록하는 단계입니다.
실행단계
선언문 외 나머지 코드를 순차적으로 실행하는 단계입니다.
생성단계에서 선언문을 환경레코드에 기록하여 콜스택에 담아두게 되는데 이 현상때문에 호이스팅이 발생하게 됩니다.
var의 경우 선언과 동시에 undefined로 초기화 되기 때문에 선언 전에 사용하면 undefined가 환경레코드에 기록되어 아무 에러 없이 사용이 가능합니다.
let과 const의 경우 선언만 환경레코드에 기록이 되어 참조오류가 발생하는 것입니다.
또한 함수선언문으로 함수를 작성한 경우에도 완성된 함수 객체를 환경레코드에 기록해 두기 때문에 에러 없이 사용이 가능합니다.
참고하면 좋은 영상
https://www.youtube.com/watch?v=EWfujNzSUmw
'개발 > Javascript' 카테고리의 다른 글
[Javascript] 스코프란? 스코프 체인이란? (0) | 2023.01.06 |
---|---|
[Javascript] 이벤트 버블링과 캡쳐링, 이벤트 위임 (0) | 2023.01.06 |
[Javascript] var, let, const에 대해 설명 (0) | 2023.01.05 |
[Javascript] 동기와 비동기란 무엇인가? (0) | 2023.01.05 |
[Javascript] promise와 callback비교 (0) | 2023.01.05 |