클로저(Closure)
는 JavaScript에서 매우 중요한 개념 중 하나입니다. 클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Environment)의 조합
입니다.
간단히 말하면, 함수 내부에서 선언한 변수를 함수 외부에서 접근할 수 있는 메커니즘입니다. 함수 내부에서 선언한 변수가 함수가 종료된 이후에도 유지되며, 함수 외부에서도 사용할 수 있게 됩니다.
이러한 동작 방식은 JavaScript에서 매우 강력하고 유용한 패턴을 구현하는 데에 사용될 수 있습니다. 예를 들어, 함수를 반환하는 함수를 만들거나, 비동기 작업에서 상태를 유지하는 등의 상황에서 클로저를 사용할 수 있습니다.
클로저는 주로 함수 내부에서 선언한 변수를 외부로 노출시키지 않고, 변수를 안전하게 보호하고 유지하기 위해 사용됩니다. 이를 통해 변수의 은닉화와 정보 은닉을 달성할 수 있습니다.
콜백 함수는 비동기적인 작업을 다룰 때 주로 사용됩니다. 예를 들어, 타이머 함수(setTimeout, setInterval)이나 AJAX 요청, 이벤트 핸들러 등에서 콜백 함수를 활용할 수 있습니다. 이러한 경우에는 작업이 완료되었을 때 실행되어야 할 코드를 콜백 함수로 전달하여 사용합니다.