Levelup 4 Hoisting

어니언·2023년 1월 30일
0
post-thumbnail

호이스팅이란 ?

console.log(letKeyword)

let letKeyword = 'let is safe'

현재상황 선언되지도않았는데 콘솔로그로 letKeyword를 부르는상황 >> not defined라는 에러경고뜸

console.log(varKeyword)

var varKeyword = 'var is safe'

는 undefined 출력이됨 에러경고가 뜨지않는다.

왜let과 var 에서 이런차이가 나는가?

이유 = 호이스팅 때문 호이스팅은 위로 끌어올려주는 것이다

자바는 코드를 실행하기 전 해석하는 과정을 거친다. 자바스크립트가 해석하는 과정에서 var 변수 선언된 키워드의 경우 선언부 만 위쪽으로 올라가게 된다.

let 키워드의경우 적혀있는 그대로

함수도 경우에 따라 호이스팅이 발생한다. 함수선언식 = 호이스팅이 발생한다. 함수선언식의 경우 var와 마찬가지로 해석하는과정에서 호이스팅 발생 위로 올라가게 된다.

함수표현식 = 호이스팅이 발생하지 않는다.

변수선언할당 =선언단계 : 선언한 변수를 식별자가 담기는 객체에 할당하는 단계식별자 : 변수명이라고 부르는 부분을 이야기함

초기화단계 : 변수에 할당할 메모리 공간을 부여하는 단계

할당단계 : 정의된 변수에 데이터가 할당되는 단계

거쳐 진행된다.

TDZ(Temporal Dead Zone)

선언단계변수에 할당할 메모리가 부여되기 전 단계< TDZ

초기화단계

할당단계

let 과 const 는 왜 호이스팅이 발생하지 않는가?let 과 const(함수표현식) 키워드는 선언단계와 초기화단계가 분리된다. 메모리가 부여되지않은상태이기 때문이다.

반대로var(함수선언식) 는 선언단계와 초기화단계가 분리되지 않는다. 메모리가 부여된 상태이기 때문이다.

profile
안녕하세요.

0개의 댓글