[자바스크립트] 자바스크립트 스코프
2021년 03월 26일, 22:20
자바스크립트 스코프
스코프란?
- 참조 대상 식별자를 찾아내기 위한 규칙
- ex)변수, 함수
스코프 종류
-
전역스코프
- 코드 어디에서든지 참조 가능
-
지역 스코프(or 함수 스코프)
- 함수 코드 블록이 만든 스코프로 함수 자신과 하위 함수에서만 참조 가능
-
블록 스코프(let, const)
- 블록 레벨(중괄호)에서 선언된 변수는 블록 내부에서만 유효
-
렉시컬 스코프
var x = 1; function foo() { var x = 10; bar(); } function bar() { console.log(x); } foo(); // ? bar(); // ?
위와 같은 경우는 bar가 어떤 상위 스코프를 가지는지 2가지로 생각해볼 수 있다.
- foo의 x=10을 가진다.
- 전역의 x=1을 가진다.
1번의 경우 동적 스코프(dynamic scope)라고 하고, 2번의 경우는 정적 스코프 즉 lexical scope라고 한다. 렉시컬 스코프는 함수가 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정된다.