블록레벨 스코프, 스코프 체인과 관련해 궁금한 점이 있습니다.
110
작성한 질문수 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
섹션2퀴즈는어디있나요?
0
5
0
state 객체로 묶기
0
18
0
몽고 db 접속 오류
0
18
1
3강 질문
0
41
2
74. 데이터 캐시 - 1 (이론) 강의 영상 누락
0
35
1
2강 nodejs 3단계 설명 질문
0
46
1
imagesLoaded에 관한 질문
0
22
2
useEffect와 lifecycle문의
0
36
2
프론트엔드 학습 수준 문의
0
48
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
53
2
최근 코테, 과제 테스트 트렌드
0
83
2
lucide react 아이콘 설치
0
49
2
17강 zustand store 서버에서 생성
1
49
1
문의관련 문의
0
52
2
next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?
0
67
2
76. 전문성 더하기: 놓치면 아쉬운 관련 기술들 수업 자료가 없어요.
0
53
2
ai 도구 질문
0
38
1
저는 왜 콘솔에서 props가 한 줄만 찍히나요?
0
48
1
렌더링 차단 리소스 javascript 실행에 관련해서 질문 있습니다.
0
54
2
데이터 로딩중 화면만 계속 나와요!!
0
57
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
84
2
02-04 layout.tsx 구조가 달라요
0
65
2
불변성을 지키며 수정 삭제를 할때도 Map이 유리한가요?
0
59
1
개인 프로젝트로 앱 개발해서 다운로드 1300 달성했는데 어느 정도 의미가 있을까요? (안드로이드 개발자)
0
72
1





