핵심 답변
함수와 함수가 선언된 어휘적 환경의 조합입니다. (MDN 정의)
함수가 속한 렉시컬 스코프를 기억하여, 함수가 렉시컬 스코프 밖에서 실행될 때도 그 스코프에 접근할 수 있게 하는 기능을 말합니다.
핵심 용어
📌 렉시컬 스코프 (Lexical Scope)
렉시컬 스코프는 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정됩니다.
자바스크립트는 렉시컬 스코프를 따르므로 함수를 선언한 시점에 상위 스코프가 결정됩니다.
함수를 어디에서 호출하였는지는 스코프 결정에 아무런 의미를 주지 않습니다.
예시 코드
javascript
function outer() {
const x = 10; // outer 스코프의 변수
function inner() {
console.log(x); // 클로저: outer의 x에 접근
}
return inner;
}
const fn = outer(); // outer 실행 완료
fn(); // 10 — outer가 종료됐어도 x에 접근 가능실무 활용
데이터 은닉: 외부에서 직접 접근할 수 없는 private 변수 구현
커링(Currying): 함수를 부분 적용해 재사용 가능한 함수 생성
팩토리 함수: 공통 로직을 공유하면서 각각의 상태를 유지하는 함수 생성