미새문지

24.06.21 day5 코드트리 반복문(반복문 안의 if까지) 학습, 클로저(Closure)란? 본문

개발 TIL

24.06.21 day5 코드트리 반복문(반복문 안의 if까지) 학습, 클로저(Closure)란?

문미새 2024. 6. 21. 23:20
728x90

처음부터 문법에 대해 쭉 반복하니 다시 파이썬에 익숙해지고 있다.


프론트엔드 기술면접 질문 - 4

클로저(Closure)란?

클로저(Closure)는 프로그래밍 언어에서 함수와 그 함수가 선언된 렉시컬 환경(Lexical Environment)을 함께 저장한 객체이며, 함수가 정의될 때의 환경을 기억하고 함수가 실행되는 동안 그 환경에 접근할 수 있도록 한다.

 

클로저의 기본 개념

1. 함수와 환경

  • 클로저는 함수와 그 함수가 선언될 때의 변수 스코프(scope)를 함께 캡처하여 저장한다.
  • 즉, 함수가 만들어질 때의 변수 값을 기억하고, 함수가 나중에 호출될 때 그 값을 사용할 수 있다.

2. 렉시컬 스코프(Lexical scope)

  • 클로저는 함수가 정의된 위치에서의 스코프를 기준으로 변수에 접근하는데 이걸 렉시컬 스코프라고 한다.

 

클로저 예시

function test() {
    let result = 'moonmisae';

    function innerFunction() {
        console.log(result); // test함수의 스코프에 있는 변수를 참조
    }

    return innerFunction;
}

const closure = test();
closure(); // "moonmisae" 출력

 

클로저 특징 및 장점

1. 데이터 은닉

  • 클로저를 사용하면 특정 데이터에 대한 접근을 제한할 수 있다.
  • 예를 들어, 객체의 프라이빗 멤버처럼 클로저를 사용해 외부에서 접근할 수 없는 변수를 만들 수 있다.

2. 상태 유지

  • 클로저를 사용하면 함수 호출 간에 상태를 유지할 수 있는데, 이를 통해 여러 함수 호출 간에 데이터를 공유할 수 있다.

3. 콜백 함수

  • 클로저는 비동기 프로그래밍에서 콜백 함수로 많이 사용되는데, 콜백 함수가 클로저로써 필요한 데이터에 접근할 수 있기 때문이다.
728x90