1. 클로저란?
클로저는 프로그래밍 언의 스코프와 관련된 속성으로, 특히 함수형 프로그래밍에서 중요하다.
여기서 함수형 프로그래밍에서 중요한 이유는
1. 테이터 은닉 : 클로저를 사용하면, 특정 함수에 한정된 변수를 만들 수 있다. 이는 외부에서 해당 변수에 접근하거나 수정하는 것을 막을 수 있다. 이런 특성은 모듈화, 정보 은닉, 캡슐화 등의 개념과 일치하며, 프로그램의 안정성을 높인다.
2. 상태유지 : 클로저는 함수가 종료된 이후에도 특정 데이터를 기억하는데 사용한다. 이는 함수가 일종의 상태 유지하는 것이다. 예를 들어 함수 호출 간에 일종의 메모리를 갖게 해준다. 이러한 특성은 반복자, 비동기 프로그래밍, 함수 메모이제이션 등에 유용하게 사용된다.
3. 고차 함수와의 상호작용 : 클로저는 고차 함수와 잘 작동을 한다. 고차 함수는 다른 함수를 매개변수로 받거나, 결과로 함수를 반환하는 함수를 말한다. 클로저를 통해, 반환되는 함수는 그것이 선언된 환경을 기억하고, 이를 강력한 프로그래밍 패러다임을 가능하게 한다.
4. 제어 흐름 관리 : 클로저는 비동기 처리나 콜백, 이벤트 핸들러 등에 유용하게 사용될 수 있다. 클로저를 사용하면 비동기 작업의 결과나 이벤트 발생 시점에서의 상태를 보존하고 이를 이후에 사용이 가능하다.
이어서. 클로저를 이용하면 함수내부에서 선언된 내부 함수가 외부 함수의 지역 변수에 접근 할 수 있다. 이렇게 되면 함수의 실행이 끝나서 메모리에서 해제된 이후에도 이 변수를 참조할 수 있게, 데이터 은닉, 정보 은닉 등을 통한 효율적인 코딩이 가능하다.
간단하게 말해서
- 클로저란 "lexical environment"에 대한 참조값을 포함한 여러가지 함수들을 한 데 모은 것을 의미한다.
- 다시말해, 클로저가 있기 때문에 당신은 내부 함수에서 외부 함수로 접근할 수 있는 것이다.
- 자바스크립트에서 클로저는 함수가 생성될 때마다 매번 생성된다.
- 클로저를 사용하려면 다른 함수의 내부 함수로 새로운 함수를 정의하고 이를 노출시켜라.
- 여기서 노출시킨다는 것은 return 하거나 다른 함수의 인자로 전달하라는 의미이다.
- 그러면 이제 내부함수는 심지어 외부함수가 return 된 이후에도 외부 함수의 변수들에 접근할 수 있는 권한을 갖게 된다.
2. 클로저가 필요한 이유
1. 전역 변수를 줄일 수 있다.
2. 비슷한 형태의 코드를 재사용률을 높일 수 있다.
3. 데이터를 숨기기 위해 사용한다.
'CS > 프로그래밍' 카테고리의 다른 글
이벤트 루프 (0) | 2023.07.23 |
---|---|
이벤트 버블링 (4) | 2023.07.16 |
MVC, MVP, MVVM 모델 (0) | 2023.07.09 |
await, async (0) | 2023.07.02 |
forEach()와 map의 차이점 (0) | 2023.07.01 |