반응형
클로저(Closure)는 함수와 그 함수가 선언될 때의 렉시컬 환경을 함께 기억하는 기능을 말한다.
다시 말해, 자신이 생성될 당시의 변수 환경에 대한 접근 권한을 유지하는 함수를 의미한다.
주요 개념
1. 렉시컬 스코프 (Lexical Scope) :
- 함수가 선언될 때, 주변의 변수들에 대한 참조를 함께 기억한다.
- 함수가 실행될 때, 이 변수들에 접근할 수 있다.
2. 함수와 환경의 결합
- 클로저는 단순히 함수를 반환하는 것이 아니라, 그 함수가 생성될 당시의 환경(변수들)을 함께 저장한다.
- 이 때문에 외부 함수가 종료된 후에도 내부 함수가 외부 변수에 접근할 수 있다.
3. 은닉화 및 상태 유지
- 클로저를 사용하면 외부에서 직접 접근할 수 없는 개인 변수(private variable)를 만들 수 있다.
- 클로저는 상태를 기억하고, 다음 호출 시 그 상태를 활용할 수 있도록 한다.
JavaScirpt Example
function createCounter() {
let count = 0;
// 클로저: 내부 함수가 외부 변수 `count`를 참조함
return funcion() {
count += 1;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 출력: 1
console.log(counter()); // 출력: 2
console.log(counter()); // 출력: 3
반응형
'Dev > notion' 카테고리의 다른 글
Syntactic sugar - 문법적 설탕 - 문법 설탕 (1) | 2025.02.21 |
---|---|
JavaScript : Prototype-based inheritance - 프로토타입 기반 상속 (1) | 2025.02.20 |
JavaScript: First-Class Functions (일급 함수) (1) | 2025.02.20 |
enum (1) | 2025.02.19 |
Generic - 제네릭 (0) | 2025.02.19 |