코딩/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 :블록스코프 //코드블록 내에서만 유효, 외부에서 접근 할 수 없다.