[JS] 클로저

이재혁·2024년 1월 17일
0

[JS]

목록 보기
6/7
post-thumbnail

#클로저

  • 함수가 선언된 스코프 외부의 변수에 접근할 수 있는 기능을 갖춘 자바스크립트의 특성입니다.

  • 함수형 프로그래밍 언어에서 중요하게 사용됩니다.

  • 상태를 안전하게 변경하고 유지하기 위해 사용됩니다.
    다시말해,
    클로저는 상태를 안전하게 은닉하고
    특정 함수에만 상태변경을 허용하기 위해 사용합니다.

#클로저의 활용

먼저, 숫자가 1씩 증가하는 카운터를 코딩 해보았습니다.

위 코드에서 num 값은 전역 변수를 통해 관리되고 있기 때문에
누구나 접근가능하고 변경할 수 있습니다.

따라서, 누군가나 어떤 상태에 의해 의도치 않게 num 값이 변경되면 오류로 이어집니다.

이를 방지하기 위해 클로저를 사용합니다.

위 코드가 실행되면 즉시 실행 함수가 호출되고
즉시 실행 함수에서 반환된 함수가 counter 변수에 할당됩니다.

counter 변수에 할당된 함수는
상위 스코프인 즉시 실행 함수의 렉시컬 환경을 기억하는 클로저 입니다.

즉시 실행 함수는 호출된 이후 소멸되지만
즉시 실행 함수가 반환한 클로저는 counter 변수에 할당되어 호출됩니다.

이때, 즉시 실행 함수가 반환한 클로저는 자신이 정의된 위치의 렉시컬 환경을 기억하고 있습니다.

따라서, 반환된 클로저는 변수 num을 언제 어디서 호출하든
참조하고 변경할 수 있습니다.

num 변수는 외부에서 직접 접근할 수 없는
은닉된 private 변수이므로 전역 변수를 사용했을 때 처럼
의도되지 않은 변경을 걱정할 필요가 없기 때문에
더 안정적인 프로그래밍이 가능합니다.

0개의 댓글