반응형
클로저
- 내부 함수와 내부 함수
함수 안에 또 다른 함수(내부 함수)가 정의된 경우에 발생
내부 함수가 외부 함수에 대한 참조를 가지는 경우, 클로저라고 함 - 변수 유지
클로저를 통해 내부 함수는 외부 함수의 변수를 참조
클로저가 함수를 정의할 때의 스코프에 있는 변수를 참조한다는 의미 - 렉시컬 스코프
클로저는 렉시컬 스코프(정적 스코프)를 따름
클로저가 함수를 정의할 때의 스코프에 있는 변수를 참조한다는 의미
클로저의 활용
- 데이터 은닉
클로저를 사용하면 변수를 외부에서 접근하지 못하게 하고, 변수에 접근하려면 클로저 내부 함수를 통해 접근해야 됨
데이터 은닉 및 정보은닉을 구현할 수 있음 - 콜백 함수
클로저를 사용하여 콜백함수를 구현하거나 비동기 작업을 처리할 수 있음
클로저를 이용해 외부 범위의 상태를 유지하면 비동기 작업에서 필요한 데이터를 전달할 수 있음 - 모듈 패턴
클로저를 활용하여 모듈 패턴을 구현할 수 있음
모듈 패턴은 프라이빗 변수와 메서드를 가진 객체를 생성하는 방법
// innerFunction은 outerFunction내에서 정의되었지만,
// outerVariable에 대한 참조를 유지하고 있기 때문에 외부에서 호출할 때도 outerVariable 값을 사용할 수 있음
function outerFunction() {
let outerVariable = "I am from the outer function";
function innerFunction() {
console.log(outerVariable); // outerVariable은 클로저에 의해 유지됨
}
return innerFunction;
}
const closure = outerFunction(); // innerFunction이 반환됨
closure(); // 출력: "I am from the outer function"반응형
'backend > JavaScript' 카테고리의 다른 글
| JavaScript 문법 핵심 요약 (1) | 2023.10.31 |
|---|---|
| 자바스크립트 Class (0) | 2023.10.31 |
| 자바스크립트 DOM (0) | 2023.10.31 |
| 자바스크립트 콜백함수 & 동기/비동기 처리 (0) | 2023.10.23 |
| 자바스크립트 this 바인딩 (0) | 2023.10.22 |
