클로저

·2023년 1월 5일
0

개발 지식

목록 보기
1/96
post-thumbnail

클로저란?

키워드
외부 lexical environment, 이너함수, 스코프 체인

함수의 실행컨텍스트가 활성화 되었을 때, 외부 lexical environment 를 참조하는 것이 가능한 것을 의미한다.

여기서 중요한 점은, 이너 함수에서 외부 lexical environment 에는 접근이 가능하나, 외부 함수 혹은 전역 환경에에서 이너 함수의 데이터에는 접근이 불가능하다는 점이다.

일반적으로 함수의 실행컨텍스트가 생성되는 경우, 호출한 외부 스코프에 대한 lexical environment 정보가 자동으로 생성된다. 함수 실행 시 a 라는 정보를 찾을 때, 만약 지역 변수 데이터에, 즉 environment record 에서 찾을 수 없다면, 생성헀던 외부 lexical environment 에서 데이터를 찾게 된다.

function foo() {
	let age = 27;
	function bar() {
		console.log(++age);
	}
	return bar;
}

const result = foo();
result(); // 28
result(); // 29
result(); // 30

어디에 사용하나?

키워드
함수형 프로그래밍, encapsulation , 모듈화

클로저는 함수형 프로그래밍에 매우 적합한 기술이다. LinkedList 와 같은 Head와 Tail의 구성으로 이루어진, 단방향성 연결(참조) 형태이므로 외부의 접근을 신경쓰지 않고, 예측 가능한 범위 내에서 코드를 작성할 수 있게 된다. 만약 작업 시 어떤 데이터가 해당 이벤트에서만 필요한 거라면 혹은 외부에 노출되어서는 안되는 것이라면, 해당 함수 스코프에서 선언하여 사용하는 것만으로 문제를 해결할 수 있다. encapsulation

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글