호이스팅[JavaScript]

배동우·2023년 9월 27일
0

호이스팅(Hoisting)?

JavaScript 엔진이 코드를 실행하기 전에 함수안에 변수 및 함수 선언을 최상단으로 끌어 올리는 것을 말함
실제 코드를 끌어 올리는 것은 아니고 사용하고자하는 변수 및 함수를 미리 선언만 하는것

변수의 호이스팅

변수를 해당 스코프의 최상단으로 끌어올리는 현상이며, 선언만 할뿐 할당되지 않는다.

함수의 호이스팅

함수 선언을 스코프의 최상단으로 끌어올리는 현상으로 함수 선언문과 함수 표현식이 다르게 동작한다.

함수 선언문에서의 호이스팅

함수 표현식에서의 호이스팅

이처럼 함수 선언문의 경우 호이스팅 과정에서 함수 자체가 메모리에 올라가지만 함수 표현식에서는
변수를 먼저 선언하고 할당하는 방식으로 호이스팅이 일어난다.

추가

let과 const

let과 const도 호이스팅이 일어난다.
하지만 위의 var대신 let과 const를 사용하면 정의되지 않았다는 오류가 발생한다.
왜그럴까 ??

이유는 자바스크립트에서 변수를 처리할때 크게 3단계에 거쳐 처리를 한다.
1.선언
----변수를 생성하고 변수를 등록
2.초기화
----등록된 변수를 undefined로 초기화
3.할당
----undefined로 초기화된 변수에 실제값을 할당

var의 경우 호이스팅 과정에서 선언과 초기화가 함께 일어나지만 let과 const의 경우 호이스팅 과정에서 선언 단계만 이루어지기 때문이다.

profile
강아지를 키우는 프론트엔드 개발자 ٩(๑•̀o•́๑)و

0개의 댓글

관련 채용 정보