반응형

 

 

 

 

 

 

1. 클로저란?

- 클로저란 내부 함수가 정의될 때 외부 함수의 환경을 기억하고 있는 내부 함수를 말한다.

- 외부 함수 안에서 선언된 내부 함수는 그 외부 함수의 지역 변수가 함수에 접근하여 사용할 수 있다.

- 클로저는 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 특징중에 하나입니다.

- 클로저는 함수를 구성하는 코드와 함수가 생성될 당시의 스코프 환경(=렉시컬 환경)으로 구성된다.

- 스코프 환경을 알고 있기 때문에, 함수가 생성될때의 모든 변수를 기억해 두었다가 함수가 호출될 때 사용할 수 있다.

 

 

 

2. 사용이유

 - 클로저는 메모리 차원에서 손해를 볼 수 있지만 이점이 많다.

  1. 상태유지: 현재 상태를 기억하고 변경된 최신 상태를 유지할 수 있다.
  2. 전역 변수 사용 억제: 상태 변경이나 가변 데이터를 피하고 오류를 피하는 안정성을 증가 시킬수 있다.
  3. 정보 은닉: 클래스 기반 언어의 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

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기