클로저란?
함수가 선언될 당시의 외부 변수를 기억하고 함수가 실행이 끝난 후에도 그 변수에 접근할 수 있는 함수입니다.
*일반적으로 함수는 실행이 끝나면 내부 변수는 사라지지만 클로저는 그 값을 기억해서 다시 사용할 수 있는 특별한 함수
클로저의 동작 방식
- 함수 안에 내부 함수가 정의되어 있고
- 내부 함수가 외부 함수의 변수를 참조하고 있으며
- 외부 함수가 return으로 내부 함수를 반환할 경우
반환된 내부 함수는 외부 함수가 종료된 이후에도 외부 변수에 접근할 수 있게 됩니다. 이를 클로저라 부릅니다.
클로저가 중요한 이유
- 값을 기억하고 유지할 수 있다.
- 클로저를 이용하면 함수 외부에서도 내부 값을 유지할 수 있다.
- 예로 카운터처럼 누적되는 숫자값을 기억해야 할 때 유용하다.
- 변수를 외부에서 숨길 수 있다.
- 자바스크립트는 private 같은 키워드가 없어 변수를 숨기기 어렵다.
하지만 클로저를 이용하면 특정 변수에 직접 접근하지 못하게 만들 수 있어 보안성과 코드 안정성이 올라간다.
- 자바스크립트는 private 같은 키워드가 없어 변수를 숨기기 어렵다.
- 비동기 처리에서 값 보존에 유리하다.
- setTimeout , addEventListner , callback 등에서 반복문 안의 값이 꼬이는 문제를 방지할 수 있다.
- React 등 프레임워크의 핵심 기반
- React의 useState, useEffect 같은 훅들도 내부적으로 클로저의 원리를 활용하고 있다.
- 상태를 저장하고 업데이트하는 구조를 만들기 위해 클로저가 필수적이다.
클로저 예시 코드
function Nice() {
let count = 0;
return function khj(){
count++;
console.log(count);
};
};
const counter = Nice();
counter(); // 1
counter(); // 2
counter(); // 3
클로저는 단순히 함수 안에서 또 다른 함수를 만드는 걸 넘어서 자바스크립트에서 상태를 관리하고 기억하기 위한 핵심적인 기술 이다.
- 함수가 종료되어도 내부 데이터를 유지하고 싶을때
- 값을 외부에 노출시키지 않고 보호하고 싶을 때
- 비동기 처리에서 특정 값을 기억하고 싶을 때
'면접 질문 관련' 카테고리의 다른 글
| 실행 컨텍스트란? (1) | 2025.06.16 |
|---|---|
| 자바스크립트의 this (1) | 2025.06.11 |
| 스코프 체인 (Scope Chain) 정리 (1) | 2025.06.05 |
| var, let, const 정리 (0) | 2025.06.05 |