본문 바로가기
Front-End/Next.js(React | Ts|Js)

호이스팅 / var,let,const 차이 -기술면접대비

by cocogugu 2023. 5. 7.
반응형

호이스팅이란..

- 코드가 실행하기 전에 선언한 변수/함수등을 해당 스코프의 최상단에 미리 끌어 올리는 것

 

var,let,const 모두 호이스팅은 발생하지만 var는 선언과 함께 undefined로 초기화 되어서 메모리에 저장되지만 let과 const는 초기화되지 않은 상태로 선언만 메모리에 저장되서 참조 에러가 발생

 

변수는 3단계에 의해 생성

1단계: 선언 단계(Declaration phase) ex) var i , let a

  • 변수를 실행 컨텍스트의 변수 객체에 등록한다. 
  • 이 변수 객체는 스코프가 참조하는 대상이 된다.

2단계: 초기화 단계(Initialization phase) ex)var i //선언과 동시에 undefined로 초기화 let a 초기화 안됐음

  • 변수 객체에 등록된 변수를 위한 공간을 메모리에 확보한다.
  • 이 단계에서 변수는 undefined로 초기화 된다.

3단계: 할당 단계(Assignment phase) // var i = "1" , let a = "2" 할당

  • undefined로 초기화된 변수에 실제 값을 할당한다. 

 

console.log(result) //undefined
result = "1"
var result;
console.log(result) //1

var로 선언된 result는 선언과 함께 undefined로 초기화 되어서 처음콘솔에는 undefined가 찍히고 "1"로 값을 할당 했기 때문에 두번째 콘솔에서는 1이 찍힌다.

 

 

 

 

 

console.log(result) //ReferenceError:
let result;

let으로 선언한 result는 선언은 되었지만 초기화가 안되어서 참조 에러(ReferenceError)가 발생

 

 

 

 

 

 

 

let과 var은 초기가 값이 필요하지 않지만 const는 선언과 동시에 초기화를 시키지 않으면 바로 에러가 발생 

반응형

댓글