본문 바로가기
국비/JavaScript

JavaScript _ 호이스팅

by haheaven 2021. 10. 13.

 

* 호이스팅 

: 코드가 실행하기 전 변수 선언이 맨 위로 끌어 올려진 것처럼 동작하는 것 

 

 

 

* 자바스크립트 엔진

: 코드를 실행하기 전 실행 가능한 코드를 형상화하고 '구분하는 과정'을 거친다. 

: 실행하기 전 실행되기 위해 필요한 환경에서 선언들(var, let, const, function())을 메모리에 저장한다.

** 호이스팅은 선언을 끌어올리는 것 처럼 동작하는 거지, 초기화를 올리진 않는다!

 

 

 


 

1) var의 호이스팅( var 는 선언과 초기화 단계가 동시에 발생)

선언 + 초기화-> 실행창(콘솔) -> 할당 (실제로 코드 순서에 따라 실행되지 않음)

var a = 6;

console.log(a);  // 6;
console.log(b);  // undefined

var b = 7;

          ==

var a = 6;
var b;

console.log(a);  // 6;
console.log(b);  // undefined

b = 7;

 


 

 

2) let의 호이스팅 (let은 선언과 초기화 단계가 분리되어 발생 )

let a = 10;
console.log(a); //10

let b;
console.log(b); //undefined

console.log(c) //ReferenceError 순서2. 
let c; // -> 순서1. 선언    순서3.초기화

** 선언 후 일시적 사각지대 공간에 머무르게 되면서 참조에러 발생!!!!

(c의 선언이 호이스팅 -> 일시적 사각지대에 머무름 -> 초기화 단계(undefined)에서 메모리를 할당받지 못함 -> 참조할 위치가 없으므로 ReferenceError 발생)

 

'국비 > JavaScript' 카테고리의 다른 글

JavaScript_변수(var, let, const)  (0) 2021.10.13

댓글