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 :블록스코프 //코드블록 내에서만 유효, 외부에서 접근 할 수 없다.
'코딩 > Javascript' 카테고리의 다른 글
객체에서 사용하는 메서드 (0) | 2021.10.14 |
---|---|
생성자 함수: 붕어빵 틀 (0) | 2021.10.14 |
데이터타입 (0) | 2021.10.08 |
카멜케이스와 파스칼케이스 (0) | 2021.10.08 |
변수1-값의 할당, 재할당 (0) | 2021.10.08 |