IT/IT ★★★
[ JS ] Scope와 Scope Chain에 대하여
shiro21
2023. 10. 17. 19:34
반응형
Scope와 Scope Chain에 대한 내용입니다.
Scope
스코프는 프로그래밍에서 변수가 선언되고 사용되는 상황을 의미합니다.
코드에서 특정 변수나 식별자가 접근 가능하거나 표시되는 위치를 결정합니다. 스코프를 이해하는 것은 변수 수명을 관리하고 네임충돌을 방지하며 잘 구조화된 코드를 작성하는데 매우 중요합니다.
- 전역 범위( Global Scope ): 전역 범위에 선언된 변수는 모든 함수와 코드 블록을 포함하여 프로그램 전체에서 접근이 가능합니다. 이 변수들은 전역 수명을 가지며 전역 상수로 간주될 수 있습니다.
- 로컬[ Function ] 범위 ( Local Scope ): 함수 내에 선언된 변수는 로컬 범위를 갖습니다. 해당 함수 내에서만 액세스할 수 있습니다. 함수가 완료되면 이러한 변수는 일반적으로 소멸됩니다. ( 클로저에 캡처되지 않는 한 )
블록 범위: 블록 범위는 현대 자바스크립트에서 let과 const 키워드를 사용하여 도입되었습니다. block문에서 let과 const를 사용하여 선언된 변수는 블록 범위를 가지며 해당 블록 내에서만 액세스할 수 있습니다.
Scope Chain
스코프 체인은 자바스크립트에서 스코프의 계층입니다. 변수에 접근하면 현재 스코프에서 해당 변수를 검색한 다음 해당 변수를 찾거나 전역 스코프에 도달할 때까지 스코프 체인을 따라 이동합니다. 이 프로세스를 통해 변수가 올바른 스코프에서 해결되도록 보장합니다. 변수가 발견되면 자바스크립트는 검색을 중지하고 변수 값을 사용합니다.
자바스크립트의 scope와 scope chain의 예
const globalScope = "Global Scope";
function outer() {
const outerScop = "Outer";
function inner() {
const innerScop = "Inner";
console.log("가장 내부", globalScope);
console.log("가장 내부", outerScop);
console.log("가장 내부", innerScop);
}
inner();
console.log("내부", globalScope);
console.log("내부", outerScop);
// console.log("내부", innerScop);
}
outer();
console.log("외부", globalScope);
// console.log("외부", outerScop);
// console.log("외부", innerScop);
위 내용은 아래와 같습니다.
- globalScope는 전역 범위 내에 있으며 코드의 모든 부분에서 접근할 수 있습니다.
- outerScope는 outer 함수의 범위에 속하며, 해당 기능과 내부 기능 내에서 접근할 수 있습니다.
- innerScope는 inner 함수의 범위 내에 있으며, 해당 함수 내에서만 접근할 수 있습니다.
스코프 체인은 변수가 적절한 컨텍스트에서 해결되도록 보장하여 다른 스코프에서 동일한 이름을 가진 변수 간의 충돌을 방지해 줍니다. 스코프와 스코프 체인을 이해하는 것은 신뢰할 수 있고 유지 관리 가능한 자바스크립트 코드를 작성하는데 중요합니다.
반응형