개발자

이 두 코드가 같은 코드 아닌가요..?

2023년 06월 16일조회 141

위의 코드는 error가 뜨고 아래 코드는 undefined가 뜨네요.. 둘 다 undefined 가 떠야 하는 거 아닌가요..? 호이스팅을 제가 잘못 이해하는 건지... 첫 번째 코그에서 let foo= 2;가 foo 사용시점보다 아래에 있지만 호이스팅 되어 let foo;가 첫 번째 위치에서 선언되는 거 아닌가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

이승로님의 프로필 사진

let, const는 블록 스코프를 가집니다. 그렇기 때문에 호이스팅 될 때, 해당하는 블록 범위 내에서 호이스팅이 됩니다. 따라서 첫번째의 경우, 변수 참조 위치가 시간상 사각지대에 해당하기 때문에 에러가 발생하게 됩니다.

1
2
3
4
5
6
7
8
let foo = 1;
{
  // 아래의 foo는 이 블록 내에서 스코프를 가지고, 호이스팅 됩니다.
  // TDZ
  console.log(foo); // TDZ
  // TDZ
  let foo= 2;
}

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!