클로저를 쉽게 이해해봅시다!
클로저(Closure)는 자바스크립트에서 헷갈리기 쉬운 개념 중 하나입니다. 하지만 쉽게 설명하면, 클로저는 "자신이 선언될 때의 주변 환경(변수들)을 기억하고 사용할 수 있는 함수" 라고 할 수 있습니다.
조금 더 쉽게 이해할 수 있도록 예를 들어보겠습니다.
클로저를 일상에서 찾아보기
예제: 냉장고에 있는 물건 기억하기
냉장고 안에 과일이 있다고 가정해보겠습니다. 냉장고를 열어서 과일을 꺼내는 사람이 있습니다. 이 사람이 냉장고 문을 닫더라도, 어떤 과일이 있었는지 기억하고 다시 꺼낼 수 있다면? 이것이 바로 클로저의 개념과 유사합니다!
코드로 클로저 이해하기
이제 자바스크립트 코드로 살펴보겠습니다.
function 냉장고() {
let 과일 = "사과"; // 냉장고 안에 있는 과일
return function() {
console.log(과일); // 냉장고 안의 과일을 기억하고 출력함
};
}
const 냉장고문열기 = 냉장고(); // 냉장고를 생성하고 문을 열 준비 완료!
냉장고문열기(); // "사과" 출력 (냉장고 안에 뭐가 있는지 기억함)
1. 냉장고() 함수가 실행되면 과일이라는 변수를 만들고, "사과"를 저장합니다.
2. return function() { console.log(과일); } 이 부분이 클로저입니다. 여기서 반환된 함수는 과일 변수를 기억하고 있습니다.
3. 냉장고문열기 = 냉장고(); 를 실행하면, 냉장고가 생성되고 문을 열 준비가 됩니다.
4. 냉장고문열기(); 를 실행하면 "사과"가 출력됩니다.
이처럼, 클로저는 자신을 감싸고 있던 함수(냉장고)의 변수를 기억하고 사용할 수 있는 함수입니다.
클로저가 왜 필요할까요?
클로저는 여러 상황에서 유용합니다. 대표적으로 변수를 보호하거나, 특정 데이터를 계속 유지해야 할 때 사용할 수 있습니다.
1. 변수를 보호하는 용도
function 카운터() {
let count = 0;
return function() {
count++;
console.log(`현재 카운트: ${count}`);
};
}
const 증가 = 카운터();
증가(); // 현재 카운트: 1
증가(); // 현재 카운트: 2
증가(); // 현재 카운트: 3
이 코드에서 count 변수는 외부에서 직접 접근할 수 없습니다. 하지만 증가() 함수를 실행할 때마다 내부적으로 count 값이 계속 유지됩니다.
이렇게 하면 실수로 count 값을 잘못 변경하는 일을 방지할 수 있습니다!
클로저는 함수가 선언될 때의 환경(변수들)을 기억하고, 나중에도 사용할 수 있도록 해주는 기능입니다. 이를 이용하면 데이터를 보호하고, 특정 상태를 유지하는 등의 다양한 활용이 가능합니다.
다음에 클로저를 접할 때, "냉장고 문을 닫아도 안에 있는 과일을 기억하는 기능"이라고 떠올려 보세요!
'개발' 카테고리의 다른 글
React 상태 관리(State Management) 방법과 장단점 비교 (0) | 2025.02.18 |
---|---|
Claude AI vs ChatGPT: 차이점, 장단점, 활용법 총정리 (0) | 2025.02.15 |
동기(Synchronous)와 비동기(Asynchronous)의 차이와 활용 (0) | 2025.02.12 |
2025년 주목해야 할 최신 CSS 트렌드 (0) | 2025.02.12 |
메타 프레임워크의 부상: Next.js, Remix, Astro로 살펴보는 프론트엔드의 미래 (1) | 2025.02.11 |