클로저를 이해하기 위해선 먼저 '스코프'라는 개념에 대해 숙지하고 있어야합니다.
구글에 JavaScript Scope 검색 후 해당 개념 숙지한다면 더 수월하게 읽을 수 있습니다.
추후 내용이 정정, 추가될 수 있습니다.
클로저란
함수가 종료되었음에도 불구하고 그 함수를 외부에서 참조하고 있어서 마치 남아있는 것처럼 동작하는 것
모든 함수에는 Life Cycle이라는 것이 존재합니다. 함수의 생애주기가 종료되었음에도 불구하고 외부의 참조로 인해 마치 존재하는 것처럼 여겨지는 것이 클로저의 특징입니다.
메모리 차원에서 손해를 볼 수 있지만 JavaScript의 강력한 기능이므로 적극 사용할 필요가 있습니다.
현재 상태를 기억하고 변경탠 최신 상태를 유지하는 데 사용합니다.
전역 변수의 사용을 억제하고 타 프로그래밍 언어의 접근 제한자 private을 흉내낼 수 있습니다.
데이터의 보존
캡슐화
모듈화
스코프를 이용해서 변수의 접근 범위를 폐쇄적으로 다루는 것
자주 사용하는 변수를 전역으로 선언한다면
보안에 취약하고 오류를 추적하는 데 어려움을 겪을 수 있다.
클로저를 통해 이를 방지할 수 있고 비슷한 형태의 코드 재사용률을 높일 수 있다.