728x90
렉시컬 스코프란?
변수와 블록의 스코프(범위)가 코드의 구조에 따라 결정되는 것을 의미한다. 이는 함수나 블록이 정의된 시점의 외부 환경을 기준으로 결정한다. 즉, 함수가 실행될 때가 아니라, 선언될 때 결정되는 것을 의미한다.
렉시컬 스코프의 작동 방식
- 스코프 결정 시점
- 함수가 정의된 위치를 기준으로 스코프가 결정한다.
- 스코프 체인
- 함수 내부에서 변수를 참조할 때, 먼저 내부 스코프에서 변수를 찾고, 없으면 외부 스코프로 이동하여 변수를 찾는다.
- 이 과정을 스코프 체인이라고 한다.
- 상위 스코프 참조
- 내부 함수는 자신이 정의된 외부 환경(상위 스코프)을 참조 가능하다.
- 이를 통해 함수가 호출되는 위치와 상관없이 일관된 스코프를 유지.
렉시컬 스코프의 예시
- outerFunction은 outerVar 변수를 참조할 수 있으며, innerFunction은 outerVar와 innerVar 변수를 모두 참조할 수 있다.
- innerFunction이 outerFunction 내부에서 정의되었기 때문에, innerFunction은 outerFunction의 스코프를 참조할 수 있기 때문이다.
const outerVar = 'I am outside!';
function outerFunction() {
const innerVar = 'I am inside!';
function innerFunction() {
console.log(outerVar); // 'I am outside!'
console.log(innerVar); // 'I am inside!'
}
innerFunction();
}
outerFunction();
클로저와 렉시컬 스코프
- 클로저란?
- 함수와 함수가 선언될 당시의 렉시컬 환경의 조합으로, 외부 함수의 변수를 내부 함수에서 접근할 수 있도록 함.
- 렉시컬 스코프와 같은 기능을 통해, 클로저와 같은 기능을 활용할 수 있게 됨
- 클로저의 예시
- makeCounter 함수는 count 변수를 가지고 있으며, 내부에 count 변수를 증가시키는 함수를 반환
- 반환된 함수는 makeCounter 함수의 렉시컬 환경을 기억하고 있어, count 변수를 계속해서 증가
function makeCounter() {
let count = 0;
return function() {
count++;
console.log(count);
}
}
const counter = makeCounter();
counter(); // 1
counter(); // 2
참고자료
728x90
'웹프로그래밍 > 부트캠프 - Codeit' 카테고리의 다른 글
| [5주차] 위클리 페이퍼 - 리액트에서 Virtual DOM이 무엇인지, 이를 사용하는 이유는 무엇인지 설명해 주세요. (0) | 2025.07.28 |
|---|---|
| [5주차] 위클리 페이퍼 - React가 렌더링 하는 방식을 설명하세요. (1) | 2025.07.23 |
| [4주차] 위클리페이퍼 - 자바스크립트에서 this 키워드의 사용과 그 특성에 대해 설명해 주세요. (2) | 2025.07.18 |
| [3주차] 위클리 페이퍼 - var, let, const 를 서로 비교해 설명해 주세요. (0) | 2025.07.15 |
| [3주차] 위클리 페이퍼 - 브라우저가 어떻게 동작하는지 설명해 주세요. (2) | 2025.07.08 |