티스토리 뷰

호이스팅

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

 

var는 에러는 나지않고 undefined가 나옴

console.log(name); // undefined

var name = Mike;

 

let은 에러가 남

console.log(name); // ReferenceError

let name = Mike;

 

이는 TDZ(Temporal Dead Zone) 때문

스코프의 시작 지점부터 초기화 시작 지점까지의 구간

초기화되지 않은 변수가 저장되는 곳

 

let은 TDZ의 영향을 받아 코드가 존재하는 위치 전에는 사용할 수 없음

코드를 예측 가능하게 하고 잠재적인 버그를 줄일 수 있음

console.log(name); // TDZ
const name = 'Mike'; // 함수 선언 및 할당
console.log(name); // 사용 가능

 

변수의 생성과정

1. 선언 단계

2. 초기화 단계

3. 할당 단계

 

var

1. 선언 및 초기화 단계 // 호이스팅 단계

2. 할당 단계

 

let

1. 선언 단계 // 호이스팅 단계

2. 초기화 단계 // 실제 코드에 도달했을 때

3. 할당 단계

 

const

1. 선언 + 초기화 + 할당 // 동시에 발생

선언하면서 바로 할당해야함 > 값을 변경할 수 없기 때문에


스코프

 

함수 스코프

var

함수 내에서 선언된 변수만 지역 변수가 됨

 

블록 스코프

let, const

모든 코드 블록에서 선언된 변수는 코드 블록 내(함수, if문, while문, for문 등)에서만 유효하며 외부에서 접근 불가능

 

유일하게 벗어날 수 없는 스코프 > 함수

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함