* 호이스팅
: 코드가 실행하기 전 변수 선언이 맨 위로 끌어 올려진 것처럼 동작하는 것
* 자바스크립트 엔진
: 코드를 실행하기 전 실행 가능한 코드를 형상화하고 '구분하는 과정'을 거친다.
: 실행하기 전 실행되기 위해 필요한 환경에서 선언들(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 |
---|
댓글