반응형
호이스팅
코드가 실행하기 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상을 말한다.
이 개념도 생각보다 단골 소재이다. 자세히 물어보는 것 보다는 개념을 잘 알고 있느니 묻는 형태로 나온다.
위의 개념을 말하면 다음 질문으로 넘어가는 경우가 많다.
그러나 포스팅을 하는거니.. 조금 더 공부해보자!
변수 선언에서의 호이스팅
// 호이스팅 때문에 선언이 끌어올려져서 오류 안남.
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');
}
참고 자료
호이스팅 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
JavaScript에서 호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다
developer.mozilla.org
호이스팅(Hoisting) 이란?
이번 포스트는 https://dev.to/lydiahallie/javascript-visualized-hoisting-478h 포스트를 참고하여 작성되었습니다.이번 포스팅을 시작으로 자바스크립트에서 중요하게 생각되는 키워드들을 주제로 선정해 공
velog.io
참고 : Execution Context | PoiemaWeb
반응형
'개발 파운데이션 > JavaScript' 카테고리의 다른 글
Javascript의 비동기 처리방식 callback vs promise ! (0) | 2023.05.15 |
---|---|
자바스크립트 동작원리란? (0) | 2023.05.11 |
Javascript에서의 this란? (0) | 2023.05.10 |
클로저(closure)의 개념 (0) | 2023.05.09 |
프로토타입과 프로토 타입 체인은 알자! (0) | 2023.05.08 |