클로저는 자바스크립트 고유의 개념이 아니라 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다
일단 정의는 이렇다.
클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다.
사실 뭔소린지 잘 모르겠고 사용되는 예시를 봐보자.
function outer(){
let x = 0; //지역변수로 사용했기 때문에 함수 밖에서 x를 변경할 수 없음!
function inner(x){
x = x+1; //x의 값을 함수를 통해서만 바꾸고 싶을 때
}
return inner;//함수 자체를 return 한다.
}
let a = outer(); //a는 inner 함수
a(1);
x = 100; //지역변수이기 때문에 불가능!! => 전역 변수의 사용 억제
이건 차차...
참고
유튜브 라매개발자 - 자바스크립트 클로저 실용적이고 쉬운 설명