코딩/Javascript

변수3-var , let , const

코딩쪼렙 2021. 10. 14. 17:11
728x90

hoisting: 스코프 내부 어디에서든 변수 선언은 최상위에 선언 된 것처럼 행동

 

let, const도 호이스팅이 된다

그럼에도 불구하고 변수 선언 및 할당보다 먼저 참조를 하면

var와 같이 undefined가 찍히지않고 에러가 나는이유는?

 

-->TDZ (Temporal Dead Zone) 때문에

호이스팅은 스코프단위로 이루어진다.

 

변수의 생성과정

1.선언 단계

2.초기화 단계

3.할당 단계

 

var 1.선언과 초기화단계(undefined 할당)
     2.할당 단계
 

let 1.선언단계
    2.초기화단계
    3.할당단계
호이스팅되면서 선언단계가 이루어지지만, 초기화 단계는 실제 코드에 도달했을 때 이루어지기 때문에 참조를 먼저하면(변수선언,할당보다 먼저 하면) 레퍼런스에러가난다.
const 1.선언 + 초기화 + 할당 단계

선언하면서 바로 할당해주어야함 
 const age = 30;

 

 

var :함수스코프         //유일하게 함수 스코프에서만 지역 변수로 사용 됨

let, const :블록스코프   //코드블록 내에서만 유효, 외부에서 접근 할 수 없다.