TDZ, 호이스팅 간단 정리

soyeon·2022년 11월 1일
0

TIL

목록 보기
28/32

https://youtu.be/ocGc-AmWSnQ

let, const의 변수 할당 단계

변수의 생성과정 : 선언 -> 초기화 -> 할당

  • 초기화: undefined를 할당해주는 단계

let

  1. 선언 단계 <-호이스팅
  2. 초기화 단계 <-코드에 도달했을 때
  3. 할당 단계

const

  1. 선언 + 초기화 + 할당 <-셋이 동시에 이뤄져야함
const gender //오류
gender = 'male'

함수 스코프와 블록 스코프

  • var - 함수 스코프 - 코드 블럭 밖에서도 쓸 수 있음
  • let, const - 블록 스코프 - 코드 블럭 안에서만 쓸 수 있음

TDZ

  • const, let은 할당하기 전에는 사용할 수 없는 것
  • const, let은 호이스팅이 된다
    * 호이스팅: 스코프 내부 어디서든 변수 선언이 최상위에 선언된 것처럼 행동
  • 근데 const, let은 할당 전에 사용하면 오류가 뜸 => 잠재적인 버그를 줄이기 위해
console.log(name) // 오류 => Temporal Dead Zone(TDZ)
const name = "Mike" //함수 선언 및 할당
console.log(name)//Mike
  • 이것도 블록 스코프 안에서 let age=20이 호이스팅된 거지만 TDZ 때문에 undefined 뜨는거임
let age = 30;
function showAge() {
  //let age; (호이스팅) (선언) 
  console.log(age); //TDZ -> ReferenceError오류
  let age = 20; //초기화, 할당
}
showAge(); //undefined

이 분이 시각적으로 설명을 잘하심
https://yeonjewon.tistory.com/85

profile
공부중

0개의 댓글