괴발개발라이프
로그인
괴발개발라이프
로그인
모던 자바스크립트 Deep Dive - 13. 스코프
둡둡
·
2024년 1월 6일
팔로우
0
JavaScript
deepdive
모던자바스크립트
자바스크립트
Modern Javascript Deep Dive
목록 보기
14/49
13.1. 스코프란?
스코프(scope, 유효범위): 식별자가 유효한 범위
모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 자신을 참조할 수 있는 범위가 결정됨
키워드(var, let, const)에 따라 다르게 동작
자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙, 네임스페이스
13.2. 스코프의 종류
코드는 전역(global)과 지역(local)으로 구분함
변수는 자신이 선언된 위치에 따라 스코프가 결정됨
전역에서 선언된 변수는 전역 변수, 지역에서 선언된 변수는 지역 변수
13.2.1. 전역과 전역 스코프
전역이란 코드의 가장 바깥 영역
어디서든 참조할 수 있음
13.2.2. 지역과 지역 스코프
지역이란 함수 몸체 내부
자신의 지역 스코프와 하위 지역 스코프에서만 유효함
13.3. 스코프 체인
스코프 체인(scope chain): 함수 중첩에 의해 계층적으로 연결된 구조
자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 스코프에서 시작하여 상위 스코프 방향으로 이동하며 변수 검색
스코프 체인은 물리적인 실체로 존재함
자바스크립트 엔진은 렉시컬 환경(Lexical Environment)을 실제로 생성함
13.3.1. 스코프 체인에 의한 변수 검색
변수를 참조하는 스코프에서 상위 스코프로 이동하면서 변수를 검색하고 존재하면 검색 종료함
하위로는 이동하지 않음 -> 하위 스코프의 변수를 상위에서 참조할 수 없음
상속과 유사함
13.3.2. 스코프 체인에 의한 함수 검색
함수 이름과 동일한 이름의 식별자에 할당된 함수 객체도 변수와 동일하게 검색함
13.4. 함수 레벨 스코프
함수 레벨 스코프: var 키워드는 함수의 코드 블록(함수 몸체)만을 지역 스코프로 인정함
코드가 아닌 일반 조건문 등의 코드 블록 내에서 선언한 var는 전역 변수가 됨
의도치 않은 전역 변수 값이 재할당 될 수 있음
13.5. 렉시컬 스코프
렉시컬 스코프 (정적 스코프, static scope): 함수를 정의한 위치에 따라 스코프 결정
함수 객체는 생성될 때 상위 스코프를 기억하고 정적으로 결정되어, 호출될 때마다 참조함
[출처] 모던 자바스크립트, Deep Dive
둡둡
괴발개발라이프
팔로우
이전 포스트
모던 자바스크립트 Deep Dive - 12. 함수
다음 포스트
모던 자바스크립트 Deep Dive - 14. 전역 변수의 문제점
0개의 댓글
댓글 작성