This page was translated from English by the community.Learn more and join the MDN Web Docs community.
스코프
스코프는 컨텍스트는값과 "표현식"이 "표현"되거나 참조 될 수 있는 현재 실행되는 컨텍스트를 의미합니다. 만약변수 또는 표현식이 "해당 스코프"내에 있지 않다면, 사용할 수 없습니다. 스코프는 또한 계층적인 구조를 가지기 때문에, 하위 스코프는 상위 스코프에 접근할 수 있지만 반대는 불가하다.
함수 는JavaScript 에서클로저 역할을 하기 때문에 스코프를 생성하므로 함수 내에 정의된 변수는 외부 함수나 다른 함수 내에서는 접근 할 수 없습니다. 예를 들어 다음과 같은 상황은 유효하지 않습니다.
JavaScript는 다음과 같은 종류의 스코프가 있습니다.
- 전역 범위: 스크립트 모드에서 실행되는 모든 코드의 기본 범위입니다.
- 모듈 범위: 모듈 모드에서 실행되는 코드의 범위입니다.
- 함수 범위:function로 생성된 범위입니다.
또한,let orconst로 선언된 변수는 추가 범위에 속할 수 있습니다.
- 블록 범위: 중괄호 쌍(블록)으로 생성된 범위입니다.
함수는 범위를 생성합니다. 예를 들면, 함수 내에서만 정의된 변수는 함수 외부나 다른 함수 내에서 접근할 수 없습니다. 다음 예는 유효하지 않습니다.
js
function exampleFunction() { const x = "declared inside function"; // 변수 x는 안에서만 사용 가능합니다. console.log("Inside function"); console.log(x);}console.log(x); // Causes error그러나, 다음 코드는 변수가 함수 외부에서 선언되어 전역 변수가 되기 때문에 유효합니다.
js
const x = "declared outside function";exampleFunction();function exampleFunction() { console.log("Inside function"); console.log(x);}console.log("Outside function");console.log(x);Blocks only scopelet andconst declarations, but notvar declarations.블록let 및const 선언만 차단하고var 선언은 차단하지 않습니다.
js
{ var x = 1;}console.log(x); // 1js
{ const x = 1;}console.log(x); // ReferenceError: x is not definedIn this article
같이 보기
- 위키백과의스코프 (컴퓨터 과학)