스코프란?

- 스코프(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념

- 자바스크립트의 스코프는 다른 언어와 구별되는 특징이 있음.

- 스코프는 변수, 함수와 깊은 관련이 있다.

- 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있다. -> 매개변수의 스코프 = 함수 몸체 내부

 

스코프
- 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해
   다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 
- 스코프 = 식별자가 유효한 범위

 

- 스코프란 자바스크립트 엔진이 식별자를 검색할 때, 사용하는 규칙이라고도 할 수 있다. 

- 자바스크립트 엔진은 코드를 실행할 때, 코드의 문맥을 고려한다. 

- 코드가 어디서 실행되며 주변에 어떤 코드가 있는지(렉시컬 환경)에 따라 동일한 코드도 다른 결과를 만들어 냄.

- 코드의 문맥은 렉시컬 환경으로 이루어진다. 이를 구현한 것이 실행 컨텍스트이다.

 

 

렉시컬 스코프

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

+ Recent posts