본문 바로가기

TypeScript

[TypeScript] 클로저(closure) - 유효 범위

클로저


클로저는 지속되는 유효 범위(persistence scope)를 의미합니다.

 

const add = (x: number) => {		// 바깥쪽 유효 범위 시작
  return (y:number): number => {	// 안쪽 유효 범위 시작
    return x + y;			// 클로저
  }					// 안쪽 유효 범위 끝
}					// 바깥쪽 유효 범위 끝

console.log(add(1)(2));			// 3

다음과 같은 예에서 함수 안쪽 유효 범위만 놓고 본다면 'x'는 존재하지 않는 변수입니다.

이처럼 범위 안에서 의미를 알 수 없는 변수를 자유 변수(free variable)라고 합니다.

타입스크립트에서는 자유 변수가 존재한다면 바깥쪽 유효 범위에서 'x'라는 변수를 찾아 컴파일합니다.

 

따라서, 다음과 같이 사용하는 경우 'add1'은 'x' 값의 메모리를 유지합니다.

const add1 = add(1);

 

'x'의 값을 유지하기 때문에 커리 기능을 사용하지 않는 것 처럼 함수를 호출할 수 있습니다.

console.log(add1(2))	// 3

 

 

 

[TypeScript] 커리(curry) - 함수에 가로 여러개 사용하는 경우

커리(curry)란 함수형 프로그래밍 언어에서 커리는 함수 호출 연산자를 연속해서 사용합니다. 일반적인 함수는 호출하는 경우 '함수명(변수)'와 같이 사용합니다. 커리를 이용하는 경우 다음 예

yangheat.tistory.com

 

 

Do it 타입스크립트 프로그래밍 / 이지스퍼블리싱 참고하였습니다.
반응형