자바스크립트 클로저 이해: 스코프 마법의 비밀
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
초보자 및 중급자 자바스크립트 개발자
난이도: 중간 (스코프 및 함수 개념 이해 필요)
핵심 요약
- 클로저는 외부 함수의 스코프를 기억하는 내부 함수로, 외부 함수가 실행된 후에도 변수에 접근 가능
outer()
실행 후inner()
가count
변수에 접근하는 예제는 클로저의 대표적 활용let i
사용 시 루프 내setTimeout
에서 정확한 값 출력 가능 (변수 스코핑 문제 해결)
섹션별 세부 요약
1. 클로저 정의 및 기초 예제
- 클로저는 lexical scope의 변수를 유지하는 함수
function outer()
에서 정의된count
변수가inner()
함수 내에서 참조됨counter()
호출 시count
값이 1, 2, 3으로 증가 (외부 함수 종료 후도 변수 유지)
2. 클로저의 활용 예시: 비밀 관리
createSecret()
함수에서secret
변수를 외부에서 접근 불가하게 유지getSecret()
및setSecret()
메서드를 통해 값 읽기/수정 가능 (캡슐화 기법)
3. 클로저 기반 함수 생성 예제
multiplier(factor)
함수가factor
값을 기억하는double
클로저 생성double(5)
실행 시factor = 2
로 인해 10 반환
4. 루프 내 클로저의 함정
var i
사용 시setTimeout
에서i
값이 3으로 고정 (변수 스코핑 문제)let i
사용 시i
값이 0, 1, 2로 정확히 출력 (블록 스코프 활용)
5. 클로저의 실무적 활용
- 콜백, 이벤트 핸들러, React 훅, 프라이빗 상태 관리 등에서 널리 사용
- React hooks 및 모듈 패턴에서 클로저 기반 상태 관리 핵심
결론
- 루프에서
let
사용으로 클로저 문제 해결,const
로 불변성 강조 - React 훅 및 모듈 패턴에서 클로저 기반 상태 관리 활용
- 클로저는 JavaScript의 핵심 개념으로, 메모이제이션, 커링 등 고급 패턴 구현에 필수적