~/pingulee

클로저, 어렵지 않아요

pingulee조회 0 · 댓글 0

개발/javascript

클로저, 어렵지 않아요

클로저는 함수가 선언될 때의 스코프를 기억하는 것이다. 그게 전부다.

function counter() {
  let n = 0;
  return () => ++n;
}
const next = counter();
next(); // 1
next(); // 2

흔한 실수

반복문에서 var로 인덱스를 캡처하면 모든 콜백이 같은 변수를 본다. let은 블록마다 새 바인딩을 만들어 이 문제를 없앤다.

어디에 쓰나

모듈 패턴, 이벤트 핸들러의 상태 유지, 디바운스 구현 등 상태를 숨기고 싶을 때마다 클로저가 등장한다.