클로저 (프로그래밍 언어)
클로저(closure)는 컴퓨터 프로그래밍 언어에서 함수와 그 함수가 선언될 때의 주변 환경과의 조합을 일컫는 용어이다. 여기서 주변 환경은 해당 함수가 정의될 당시의 유효 범위(scope) 내에 있는 변수들을 의미한다.
클로저는 일반적으로 함수가 정의된 이후에도 그 함수가 자신이 정의될 때의 환경에 접근할 수 있도록 해준다. 이는 함수가 다른 함수 내에서 정의되고, 그 내부 함수가 외부 함수의 변수에 접근할 때 특히 유용하게 사용된다. 이러한 특징은 클로저를 사용하여 상태를 유지하고, 데이터 은닉을 구현하며, 콜백 함수를 생성하는 데 도움을 준다.
클로저의 핵심은 함수 자체와 그 함수가 자유 변수(free variable)에 접근할 수 있는 능력이다. 자유 변수란 함수 내에서 사용되지만, 함수 자체의 매개변수나 지역 변수로 정의되지 않은 변수를 의미한다. 클로저는 이러한 자유 변수를 포획(capture)하여 함수가 실행될 때 사용할 수 있도록 한다.
클로저는 많은 프로그래밍 언어에서 지원되며, 함수형 프로그래밍 패러다임에서 중요한 역할을 수행한다. 예를 들어, JavaScript, Python, Ruby, Scala 등에서 클로저를 활용하여 다양한 프로그래밍 패턴을 구현할 수 있다. 클로저를 사용하면 코드를 더 모듈화하고, 재사용성을 높이며, 유지보수를 용이하게 할 수 있다.
클로저를 잘못 사용하면 메모리 누수와 같은 문제가 발생할 수 있으므로, 주의해서 사용하는 것이 중요하다. 클로저가 포획한 변수가 더 이상 필요하지 않을 때 적절하게 해제하는 방법을 고려해야 한다.