블록레벨 스코프, 스코프 체인과 관련해 궁금한 점이 있습니다.
115
작성한 질문수 1
if (true) {
let y = 'hi';
function test() {
console.log(y);
}
}
console.log(y); // ReferenceError: y is not defined
test(); // hi위 코드 실행 시 console.log(y)는 참조 에러, test()는 'hi'가 출력되어집니다.
제가 알기론 자바스크립트는 코드 블럭이 아닌 함수에 의해서 지역 스코프가 생긴다(함수 레벨 스코프)고 알고 있습니다. 따라서 if문(블록문) 내에 정의한 test 함수를 전역에서 호출해도 에러가 발생하지 않는 것이고요.
let, const 키워드로 선언한 변수의 경우 블록 레벨 스코프를 가지기 때문에 전역에서 y 변수 참조 시 참조 에러가 발생하는 것도 이해할 수 있습니다.
제가 궁금한 것은
test 스코프의 상위 스코프는 전역 스코프가 아닌지?
test 스코프의 상위 스코프가 if문 블록 스코프라면 전역에서 test함수 호출 시 참조에러가 발생해야하는거 아닌가요?(엄격 모드일 경우 참조에러 발생, 비엄격 모드일 땐 위 처럼 'hi'출력)그렇다면 test 함수 내에서는 y를 참조할 경우 test 함수 내부에 y가 있는지 찾은 후 없기 때문에 스코프 체인에 따라 전역에 y가 있는지 찾고 이 경우에도 없기 때문에 참조에러가 발생해야하는 것이 아닌지? 어떻게 블록 레벨의 'hi'를 찾을 수 있는지?
입니다.
잘못된 개념이 있다면 알려주시면 감사하겠습니다 ㅜㅜ
답변 0
10월 15일 삭제예정 강의 문의
0
37
1
강의제목에 10/15일 삭제라고 나와있는데,
0
48
1
스크립트 영상 미일치
0
76
3
감정일기장 다이어리 필터 적용할때 컨텍스트를 Home에서 가져오는 특별한 이유가 궁금합니다.
0
57
2
강의 설명 중에 헷갈리는 것이 있네요
0
58
1
수업자료 관련 문의
0
66
3
1강 동영상 재생 오류
1
67
2
Composition단계에서 `Layer`는 누가 만드는지
0
44
1
Strict Mode 예시 질문!
0
58
2
수업이 안보여요
0
63
1
저자 블로그에 있는 강의는 어떤 강의인가요?
1
62
1
[해결됨]윈도우즈 환경에서 타입 스크립트 파일이 실행이 안됩니다.
1
86
5
4강 카드뉴스 자동화 자료가 안보입니다!!
0
107
2
윈도우즈 환경에서 진행중입니다.
0
63
2
4강 카드뉴스 자동화 자료
6
124
1
라이브 강의 영상 녹화본이 있을까요?
0
100
1
인증이 늦었습니다ㅜㅜ 확인부탁드립니다
0
89
1
스웨거 접속이 안되는데 확인 부탁드립니다.
0
64
1
설명이 잘못된거같습니다.
1
77
2
수강자료 다운로드 관련 문의
0
109
2
선택정렬 이해하기 & 구현하기
0
59
1
mission12-01 guide.md파일 누락
0
80
2
자료집 관련
0
66
2
13. (App 2) 기본기 훈련 에서
0
97
1





