반응형
1. 클로저란?
- 클로저란 내부 함수가 정의될 때 외부 함수의 환경을 기억하고 있는 내부 함수를 말한다.
- 외부 함수 안에서 선언된 내부 함수는 그 외부 함수의 지역 변수가 함수에 접근하여 사용할 수 있다.
- 클로저는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 특징중에 하나입니다.
- 클로저는 함수를 구성하는 코드와 함수가 생성될 당시의 스코프 환경(=렉시컬 환경)으로 구성된다.
- 스코프 환경을 알고 있기 때문에, 함수가 생성될때의 모든 변수를 기억해 두었다가 함수가 호출될 때 사용할 수 있다.
2. 사용이유
- 클로저는 메모리 차원에서 손해를 볼 수 있지만 이점이 많다.
- 상태유지: 현재 상태를 기억하고 변경된 최신 상태를 유지할 수 있다.
- 전역 변수 사용 억제: 상태 변경이나 가변 데이터를 피하고 오류를 피하는 안정성을 증가 시킬수 있다.
- 정보 은닉: 클래스 기반 언어의 private 키워드를 흉내낼 수 있다.
3. 사용방법
기본 형태
// 외부 함수
function closuer() {
// 변수 정의
var count = 0;
// 내부 함수(클로저) 선언
function inner() {
return ++count;
}
// 내부 함수 반환
return inner();
}
// 익명 함수를 이용한 방법
function closure() {
var count = 0;
// 익명 함수(클로저) 반환
return function() {
return ++count;
}
}
클로저 함수 사용 예시
function outter() { // 외부 함수
var data = 1;
function inner() { // 내부 함수
return data;
}
return inner();
}
클로저 함수 호출
var func = outter();
console.log(func);
//결과: 1
#참고사이트
https://developer.mozilla.org/ko/docs/Web/JavaScript/Closures
https://poiemaweb.com/js-closure
반응형
'Frontend > JavaScript' 카테고리의 다른 글
[JS] 자바스크립트 부모, 형제, 자식 노드 찾기 (0) | 2021.08.12 |
---|---|
[JS] 문자열에서 특정 문자 검색 (0) | 2021.08.11 |
[JS] 이벤트 버블링과 캡처링 (0) | 2021.08.04 |
[JS] null과 undefined에 대해서 (0) | 2021.08.01 |
[JS] 자바스크립트 큐, 스택, 트리 구현하기 (0) | 2021.07.29 |
최근댓글