TIL79-08 면접준비10: Hoisting

김태혁·2023년 4월 25일
0

TIL

목록 보기
174/205

Hoisting

  • Hoisting은 변수와 함수 선언이 해당 스코프의 맨 위로 끌어올려지는 것을 말하며, 선언 이전에도 사용될 수 있습니다. let이나 const와 같은 블록 스코프에서 선언된 변수는 hoisting이 발생하지 않습니다.

심화

  • Hoisting은 자바스크립트에서 변수 및 함수 선언이 해당 스코프의 맨 위로 끌어올려지는 것을 말합니다. 이것은 선언된 변수나 함수가 아직 스코프 안에서 할당되거나 정의되기 전에도 사용될 수 있다는 것을 의미합니다.

  • 예를 들어, 다음과 같은 코드가 있다고 가정해 봅시다.

console.log(x);
var x = 10;
  • 이 코드에서 x 변수는 선언 이전에 console.log()에 의해 사용됩니다. 하지만 실제로 실행할 때 자바스크립트는 선언문인 var x = 10을 변수를 선언하고 초기화하는 것과 같은 의미로 인식하며 변수 x를 전역 스코프에서 선언합니다. 따라서 실제로 실행되는 코드는 다음과 같습니다.
var x;
console.log(x);
x = 10;
  • 이러한 동작은 함수 선언에도 적용됩니다. 함수 선언은 변수 선언과 동일하게 스코프의 맨 위로 끌어올려지며, 함수를 선언하기 전에도 호출할 수 있습니다.

  • 하지만 let이나 const와 같은 선언 방식에서는 hoisting이 발생하지 않습니다. 이는 선언과 초기화가 동시에 이루어지지 않고 블록 스코프에서 발생하기 때문입니다. 이러한 변수들은 블록 안에서 선언된 후에만 사용할 수 있으며, 블록을 벗어나면 스코프 밖으로 벗어나게 됩니다.

profile
도전을 즐기는 자

0개의 댓글