[JS] Hoisting이란?

장여진·2022년 3월 21일
0

Hoisting(호이스팅이란?)👀

  • 선언이 코드 실행 보다 먼저 메모리에 저장되는 과정으로 인한 현상

  • 코드 실행 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상

  • 코드 실행 전 이미 변수선언/함수선언이 저장되어 있기 때문에 선언문보다 참조/호출이 먼저 나와도 오류 없이 동작한다.

  1. 함수전체 함수에 대한 참조와 함께 저장되기 때문에 함수를 만든 라인 이전에도 호출 가능
  2. var 키워드로 선언된 변수와 달리 let,const 키워드로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError)가 발생!!
console.log(sum(1,2)) //3 
console.log(c) // undefined
console.log(b) // ReferenceError: b is not defined
console.log(a) // ReferenceError: a is not defined

function sum(x,y) {
 return x + y;
}

const a
let b
var c

위의 현상은 var 키워드로 선언된 변수는 선언과 함께 undefined로 초기화되어 메모리에 저장되지만
let,const 키워드로 선언된 변수는 초기화되지않은 상태로 선언만 메모리에 저장되기 때문..🙄


공부하며 작성하고 있는 블로그입니다.
잘못된 내용이 있을 수 있으며 혹시 있다면 댓글 달아주시면 감사하겠습니다 😊

0개의 댓글