closure

이홍경·2021년 8월 4일
0
  • 일반적인 함수는 실행이 끝나고 난 뒤 내부의 변수를 사용할 수 없다. 클로저는 외부 함수의 실행이 끝나더라도, 외부 함수 내 변수가 메모리 상에 저장된다. (어휘적 환경을 메모리에 저장하기 때문에 가능)

  • 클로저 함수는 "함수를 리턴하는 함수". 함수를 리턴하는 함수가 클로저의 형태를 만든다.

  • 클로저의 핵심은 스코프를 이용해서, 변수의 접근 범위를 닫는(closure; 폐쇄) 데에 있음.

  • 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다.

  • 리턴되는 함수가 선언된 주변의 어휘적 환경 중 외부 함수의 변수가 포함되어 있기 때문.

  • 클로져 함수("외부함수의 컨텍스트에 접근할 수 있는 내부함수")

  • 클로저 패턴에서는 메모리 상에 남아 있게 됩니다. 외부 함수 스코프가 내부함수에 의해 언제든지 참조될 수 있기 때문. 따라서 클로저를 남발할 경우 퍼포먼스 저하가 발생할 수도 있음.

const tagMaker = tag => content => `<${tag}>${content}</${tag}>`

const div = tagMaker('div');
div('Hello world!'); // <div>Hello world!</div>

const section = tagMaker('section');
section('This is newsfeed section.'); // <section>This is newsfeed section.</section>
  • 이렇게 클로저는 재사용 할 수 있도록 모듈화에 쓰이는 경우가 많음.
profile
개발자를 꿈꾸는 자

0개의 댓글