호이스팅이란

ChungKyu Kim·2022년 4월 9일
0

TIL

목록 보기
42/52

그래서 호이스팅이란?

자바스크립트 인터프리터가 변수, 함수의 메모리 공간을 선언 전에 미리 할당하는 것
-> 변수의 선언과 초기화를 분리 후, 선언만 코드 최상단으로 옮기는 것

인터프리터 ?
코드를 한 줄씩 위에서 아래로 내려가며 읽는 프로그램, 컴파일러와 대조되는 개념

함수

함수가 만들어지기 전에 함수 호출이 먼저 일어났지만, 이건 잘 작동된다. 이유는 함수 선언이 호이스팅되었기 때문에.

함수표현문은 호이스팅에 영향을 받지 않는다.

변수

변수 선언 과정
1. 선언 단계(Declaration)

변수 객체에 변수 등록

  1. 초기화 단계(Initialization)

등록된 변수를 메모리에 할당. 여기서 변수는 undefined로 초기화

  1. 할당 단계(Assignment)

실제 값을 undefined에 할당

let, const

선언만 호이스팅되기 때문에, let과 const는 참조에러(ReferenceError)가 난다.

var

그러나 var는 선언과 동시에 초기화가 되기때문에 undefined라는 값이 할당된다.

한줄리뷰

변수명과 함수명이 같은 상태로 호이스팅되면 변수가 함수 값을 덮어쓰는 단점도 있다고 한다.
또한, 가독성에 있어서 호이스팅을 지양해야 한다.

profile
프리비엣!

0개의 댓글