스코프란?
- 스코프(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념
- 자바스크립트의 스코프는 다른 언어와 구별되는 특징이 있음.
- 스코프는 변수, 함수와 깊은 관련이 있다.
- 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있다. -> 매개변수의 스코프 = 함수 몸체 내부
스코프
- 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해
다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다.
- 스코프 = 식별자가 유효한 범위
- 스코프란 자바스크립트 엔진이 식별자를 검색할 때, 사용하는 규칙이라고도 할 수 있다.
- 자바스크립트 엔진은 코드를 실행할 때, 코드의 문맥을 고려한다.
- 코드가 어디서 실행되며 주변에 어떤 코드가 있는지(렉시컬 환경)에 따라 동일한 코드도 다른 결과를 만들어 냄.
- 코드의 문맥은 렉시컬 환경으로 이루어진다. 이를 구현한 것이 실행 컨텍스트이다.
렉시컬 스코프
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); //?
bar(); //?
- 위 예제 실행 결과는 bar 함수의 상위 스코프가 무엇인지에 따라 결정.
1. 함수를 어디서 호출했는지에 따라 상위 스코프를 결정 : foo 함수의 지역스코프, 전역 스코프
-> 동적 스코프
2.함수를 어디서 정의했는지에 따라 상위 스코프를 결정 : 전역 스코프
-> 렉시컬 스코프 (정적 스코프)
-> 자바스크립트를 비롯한 대부분의 프로그래밍 언어는 렉시컬 스코프를 따른다.
-> 따라서 위 실행 결과는 x의 값 1을 두 번 출력함
-> 렉시컬 스코프는 클로저와 깊은 관계가 있음
JS는 렉시컬 스코프를 따르므로 함수를 어디서 호출했는지가 아니라 함수를 어디서 정의했는지에 따라 상위 스코프를 결정한다.
'Javascript' 카테고리의 다른 글
| [js] 함수와 일급 객체 (2) | 2025.01.21 |
|---|---|
| [js] 생성자 함수에 의한 객체 생성 (5) | 2025.01.21 |
| [js] Property Attribute (4) | 2025.01.20 |
| [js] var, let, const (4) | 2025.01.16 |
| [js] 객체에 대해서 ... (1) | 2025.01.13 |