TIL - 자바스크립트 호이스팅(Hoisting)

MinWoo Park·2021년 3월 4일
0

TIL

목록 보기
19/49
post-thumbnail

Today I Learned

매일 배운 것을 정리하며 기록합니다. 자바스크립트 호이스팅에 대해 공부하였습니다.


호이스팅(Hoisting)

  • 호이스팅은 JavaScript에서 실행 콘텍스트(특히 생성 및 실행 단계)가 어떻게 동작하는가에 대한 일반적인 생각으로 여겨집니다.

  • 호이스팅에 대한 오해가 있는데 예를 들어, 호이스팅을 변수 및 함수 선언이 물리적으로 작성한 코드의 상단으로 옮겨지는 것으로 가르치지만, 실제로는 그렇지 않습니다.

  • 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만, 코드에서 입력한 위치와 정확히 일치한 곳에 있습니다.

  • JavaScript가 어떤 코드 구분을 실행하기 전에 함수 선언을 메모리에 저장하는 방식의 장점 중 하나는 코드에서 선언하기 전에 함수를 사용할 수 있다는 것입니다.

  • JavaScript는 초기화가 아닌 선언만 끌어올립니다(hoist).


  • 함수 선언문: 호이스팅 가능
catName("Chloe");

function catName(name) {
  console.log("My cat's name is " + name);
}
/*
위 코드의 결과는: "My cat's name is Chloe"
*/

  • 함수 표현식: 호이스팅 불가
catName("Chloe");

const catName= function(name) {
  console.log("My cat's name is " + name);
}
// VM11:1 Uncaught ReferenceError: Cannot access 'catName' before initialization

Reference : MDN Hoisting

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글