개발 파운데이션/JavaScript

Javascript 호이스팅

ggobong# 2023. 5. 12. 16:08
반응형

호이스팅

코드가 실행하기 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상을 말한다.

이 개념도 생각보다 단골 소재이다. 자세히 물어보는 것 보다는 개념을 잘 알고 있느니 묻는 형태로 나온다.
위의 개념을 말하면 다음 질문으로 넘어가는 경우가 많다.

그러나 포스팅을 하는거니.. 조금 더 공부해보자!

변수 선언에서의 호이스팅

// 호이스팅 때문에 선언이 끌어올려져서 오류 안남.
console.log(text); // (선언 + 초기화 된 상태)
text = 'Hanamon!'; // (선언 + 초기화 + 할당 된 상태)
var text;
console.log(text);

// 호이스팅 때문에 선언이 끌어올려졌지만 초기화 안된 상태에서 참조해서 오류 남.
console.log(text); // (선언 된 상태, 초기화(메모리 공간 확보와 undefined로 초기화) 안되서 참조 불가능 -> 에러남)
let text; // 여기서 초기화 단계가 실행됨

const text; // 에러남. 주의! 애초에 const 키워드로 재할당 불가능! 그래서 선언과 동시에 할당해야함

함수 선언에서의 호이스팅

foo1(); // 함수 선언문에서는 호이스팅 일어난다.
foo2(); // 함수 표현식이라서 호이스팅 안된다.

function foo1() {
  console.log('Hello');
}

var foo2 = function() {
  console.log('world');
}


참고 자료

참고 : Hoisting – 용어 사전 | MDN

 

호이스팅 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

JavaScript에서 호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다

developer.mozilla.org

참고 : 호이스팅(Hoisting) 이란?

 

호이스팅(Hoisting) 이란?

이번 포스트는 https://dev.to/lydiahallie/javascript-visualized-hoisting-478h 포스트를 참고하여 작성되었습니다.이번 포스팅을 시작으로 자바스크립트에서 중요하게 생각되는 키워드들을 주제로 선정해 공

velog.io

참고 : Execution Context | PoiemaWeb

 

 

반응형