#29.TIL | Hoisting

Seongjae Hwang·2022년 1월 3일
0

Hoisting

호이스팅이란 함수 안의 변수 선언을 모두 최상단으로 끌어 올려주는 JavaScript의 독특한 기능이다. 나는 처음 배운 언어가 JavaScript였기 때문에 당연하다고 생각했었는데, C언어 및 Java에서는 변수를 사용하거나, 어떤 함수를 호출하기 위해서는 사용하기 전에 미리 변수, 함수가 선언되어 있어야 한다고 한다.
(실제로 코드가 끌어 올려지는 건 아니고, JavaScript Parser 내부적으로 끌어올려서 처리한다고 한다. JavaScript는 바로 실행되는 것이 아닌 실행가능한 코드로 컴파일(yarn start하면 보이는 Compiled successfully!) 과정을 거치게 되는데, 이때 모든 선언들이 스코프에 등록이 된다. 따라서, 실제 실행될때는 이미 선언들이 등록된것을 들고 온다.)

ex)

위와 같이 함수의 선언 --> 함수의 호출 과정이 일반적이지만

위와 같이 함수의 호출 --> 함수의 선언도 가능하다.

하지만


함수의 선언식이 아닌 표현식에서는 Hoisting이 일어나지 않는다.

또한, 변수부분에서 var는 변수 및 함수 선언문에서 Hoisting이 일어나고, let과 const는 변수 선언과 함수표현식에서 Hoisting이 발생하지 않는다.
(var는 사용하지 않고 있었지만 오늘부로 그 이유를 확실하게 알게 되었다.)

결론적으로 Hoisting을 JavaScript에서 권장하지 않는다고 하니 가독성과 유지보수를 위해 가급적 코드 상단부에서 변수 및 함수를 선언하고 사용해야겠다.

profile
Always Awake

0개의 댓글