클로져(Closure)

Taesol Kwon·2020년 5월 11일
0

Wecode

목록 보기
30/32

클로져란 무엇인가?

  • 외부함수의 지역변수를 사용하는 내부함수가 소멸될 때까지 소멸되지 않는 특성을 의미한다.
  • 자신의 생성된 시점의 환경을 기억하는 함수
렉시컬 스코프 : 함수가 중첩될 때 parser가 변수의 이름을 해석하는 방법

Hooks도 클로져 함수이다!!!!

<예제>

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는 어떤 데이터(어휘적 환경)와 그 데이터를 조작하는 함수를 연결하는 데 있어서 유용하다. (객체지향 프로그래밍의 정보 은닉과 모듈화 같은 이점을 얻을 수 있다.)

Tip!(Closure도 남발하면 안좋을 수 있다.)

클로져를 사용하면 가비지 컬렉션 대상이 되어야 할 객체가 메모리 상에 남아 있게 되므로, 클로져를 남발하면 메모리를 과다로 잡아 먹을 수 있기 때문이다.

참조사이트
번역본

profile
사진촬영을 좋아하는 프론트엔드 개발자입니다.

0개의 댓글