함수형 프로그래밍에서의 객체다.
“A closure is the combination of a function and the lexical environment within which that function was declared.”
함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다.
https://poiemaweb.com/js-closure 참고
함수형 프로그래밍에서 객체(함수, {...}, 스크립트)는 렉시컬 환경이라 불리는 internal hidden associated object를 갖는다.
const Test = () => {
// Lexical environment
return (
<>
<h2>테스트</h2>
</>
);
};
react에서의 컴포넌트를 예시로 들어보면 Lexical environment의 영역은 다음과 같다. 기능과 속성의 집합이기 때문에 Test 컴포넌트는 객체다.
함수형 프로그래밍은 객체를 멀리하여야 한다.
하지만 react는 클로저 형태이기 때문에 객체다.
...? 무상태프로그래밍을 해야 하는데 말이 되지 않는다.
그래서 함수형프로그램이 가능하게 하기 위해서 객체가 아닌 함수 = 순수함수가 필요하다.
그래서 나온게 Redux