Recent Posts
Recent Comments
Archives
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- git
- domain
- 코드카타
- 모던 자바스크립트
- array정적메서드
- 스파르타코딩클럽
- deep dive
- vscode
- vercel
- 프로그래머스
- React
- error
- 소셜 로그인
- 모던자바스크립트
- 셋팅
- 코딩테스트
- CORS
- 자주 까먹는
- 구글 로그인
- 티스토리챌린지
- 초기셋팅
- 프로젝트 셋팅
- 오블완
- 코테
- 리터럴
- Next
- useRouter
- js
- 내일배움캠프
- nextjs
- Today
- Total
파피루스
13장, 스코프 본문
스코프(Scope, 유효범위)는 식별자가 유효한 범위를 말하며, 전역(global)과 지역(local) 두가지로 구분된다.
말 그대로 전역은 코드의 가장 바깥 영역이다. 전역에 선언한 변수는 어디에서든 참조할 수 있는 값이 된다.
전역과 반대로 지역은 함수 내부를 말한다. 지역변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다.
var a = "전역변수 aaa^_^a";
var b = "전역변수 bbb^_^b";
function outer () {
var c = "아우터 안의 C";
console.log(a); // "전역변수 aaa^_^a";
console.log(b); // "전역변수 bbb^_^b";
console.log(c); // "아우터 안의 지역 c";
function inner() {
var x = "이너 안의 a";
console.log(a); // "이너 안의 지역 a";
console.log(b); // "전역변수 bbb^_^b";
console.log(c); // "아우터 안의 지역C";
}
inner();
}
outer();
console.log(a); // "전역변수 aaa^_^a";
console.log(c); // ReferenceError : c is not defined
위 코드의 계층 구조를 그림으로 나타내면 아래와 같이 그릴 수 있다. 이렇게 스코프가 계층적으로 연결된 것을 스코프 체인이라 하며, 자바 스크립트 엔진은 코드를 실행하기 전에 그림과 유사한 자료구조인 렉시컬 환경(Lexical Environment)를 실제로 생성한다.
자바스크립트의 렉시컬 스코프(함수를 어디에서 정의했는지에 따라서 상위 스코프를 결정한다)와 반대되는 개념은 동적 스코프(함수를 어디에서 호출했는지에 따라 상위 스코프를 결정한다)이다.
'Book > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
17장, 생성자 함수에 의한 객체 생성 (0) | 2024.05.08 |
---|---|
14장, 전역 변수의 문제점 (0) | 2024.05.07 |
11장, 원시값과 객체의 비교 (0) | 2024.04.19 |
10장, 객체 리터럴 (1) | 2024.04.19 |
9-2장, 단축 평가 (2) | 2024.04.19 |