<예제>
const useState = (initialValue) => {
let value = initialValue
const state = () => {
//state는 내부 함수이자 클로저이다.
return value;
}
const setState = (newVal) => {
value = newVal
}
return [state, setState]
}
const [get, setGet] = useState(0)
console.log(get()) // 0 출력
setGet(1)
console.log(get()) // 1 출력
Closure
는 어떤 데이터(어휘적 환경)와 그 데이터를 조작하는 함수를 연결하는 데 있어서 유용하다. (객체지향 프로그래밍의 정보 은닉과 모듈화 같은 이점을 얻을 수 있다.)
클로져를 사용하면 가비지 컬렉션 대상이 되어야 할 객체가 메모리 상에 남아 있게 되므로, 클로져를 남발하면 메모리를 과다로 잡아 먹을 수 있기 때문이다.