티스토리 뷰
자바스크립트에서 함수가 선언된 렉시컬 스코프를 기억하고, 그 스코프 밖에서도 해당 스코프에 접근할 수 있는 함수(개념)를 말한다.
함수와 그 함수가 선언된 환경을 함께 묶은 개념으로 내부 함수가 외부 함수의 변수에 접근하거나 저장된 값을 유지할 수 있는 특성을 제공한다.
주요 특징 간단히 요약
1. 변수 접근: 내부 함수가 외부 함수의 변수에 접근할 수 있다.
2. 변수 유지: 외부 함수 실행이 종료되어도 내부 함수는 외부 함수의 변수를 참조한다.
3. 데이터 은닉: 클로저를 사용하여 데이터를 외부에서 직접 접근할 수 없도록 보호할 수 있다.
예시
function 외부함수(외부매개변수) {
return function 내부함수(내부매개변수) {
console.log(`외부함수: ${외부매개변수}`);
console.log(`내부함수: ${내부매개변수}`);
};
}
const 함수 = 외부함수("외부호출");
함수("내부호출");
// 출력:
// 외부함수: 외부호출
// 내부함수: 내부호출
클로저가 어디에 어떻게?를 간단히 설명해보자면...
1. 반환된 내부함수를 호출 -> `함수("내부호출")`
2. 외부함수의 실행은 종료되었으나 외부매개변수에 여전히 참조할 수 있다. = 클로저
주의할 점은
클로저는 메모리를 사용하는 특성이므로, 의도하지 않은 클로저는 메모리 누수를 초래한다.
또한 과도하게 사용할 경우 디버깅이 어렵다.
이게 클로저를 이해하기 위해서는......
실행 컨텍스트와 스코프체인을 이해하고 있어야한다.
간단히 설명해보면
자바스크립트는 코드가 실행될때, 함수 호출 시마다 새로운 실행 컨텍스트가 생성된다.
실행 컨텍스트는 함수의 실행환경을 정의하는데 이때, 렉시컬 환경과 스코프 체인을 포함한다.
렉시컬 환경은 함수가 선언된 시점의 스코프 정보와 변수들을 담고 있다. (렉시컬 환경이 키 포인트)
그리고 스코프 체인은 함수가 실행될 때, 변수와 함수 선언을 검색하기 위한 체인이며, 이것을 통해 외부 렉시컬 환경의 상위 스코프를 참조한다.
---> 스코프 체인을 통해 내부 함수는 외부 렉시컬 환경에서 외부변수를 참조 할 수있는 현상 = 클로저
이때, 실행 컨텍스트가 종료되었음에도 참조가 되고 있기 때문에 가비지 컬렉션 되지 않는다. = 메모리 누수 주의
'개념 > AI와 함께' 카테고리의 다른 글
[챗지피티와 공부를 해보자] 03. 실행 컨텍스트(Execution Context) (2) | 2025.01.30 |
---|---|
[챗지피티와 공부를 해보자] 02. 이벤트 루프와 비동기 처리 + 가비지 컬렉션과의 연관 (2) | 2025.01.23 |
[챗지피티와 공부를 해보자] 소개 (0) | 2025.01.22 |
- Total
- Today
- Yesterday
- 코딩애플
- 뷰
- JavaScript
- 아티클
- 통신
- 자바스크립트
- Study
- JS
- jQuery
- Method
- 강의
- 공부
- 브라우저
- VUE
- css
- 타입스크립트
- TypeScript
- 제이쿼리
- 프론트엔드
- html
- 메서드
- vue.js
- 제로초
- Article
- frontend
- 차이
- 리액트
- 프로젝트
- React
- 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |