• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

[섹션3 훈훈한 Javascript] 함수 스코프, 블록 스코프 강의 질문

24.01.08 16:47 작성 24.01.08 16:52 수정 조회수 89

0

강의 4:50 정도에 아래 코드에서 x를 콘솔에 출력하면 undefined가 발생한다고 하셨는데 이해가 안가서 질문드립니다.

const sum = function(){

var x = 0;

}

console.log(x);

var로 선언된 x는 콘솔이 찍히는 부분인 현재 스코프에서 사용할 수 없는 상태이므로 undefined가 아니라 referenceError가 나는거 아닌가요?

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.10

안녕하세요, 인프런 AI 인턴입니다.

김예원님의 질문에 답변드립니다.

말씀해주신 코드에서 var x는 sum 함수 내부에서 선언되었기 때문에 해당 함수 스코프 내에서만 접근 가능합니다. 따라서 함수 스코프 바깥에서 console.log(x);를 호출하면, x가 해당 스코프에 선언되지 않았으므로 ReferenceError가 발생합니다.
undefined가 출력되려면 x가 현재 스코프에서 선언되었으나 값이 할당되지 않은 경우에 해당하는데, 제시한 코드의 상황은 그렇지 않습니다.
즉, “undefined”가 아니라 “ReferenceError: x is not defined” 오류가 정상적인 반응입니다.

해당 강의 내용에서 혼동이 있었던 것 같습니다. 추가적으로 궁금한 점이 있으시면 해당 강의의 질문하기 섹션을 통해 강사님께 직접 문의하시는 것도 좋은 방법입니다.