TypeScript
[TypeScript] 클로저(closure) - 유효 범위
SunPark
2021. 7. 10. 19:46
클로저
클로저는 지속되는 유효 범위(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 타입스크립트 프로그래밍 / 이지스퍼블리싱 참고하였습니다.
반응형