js 클로저가 뭐야? 클로저는 자바스크립트에서 중요한 개념 중 하나입니다. 클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조합입니다. 클로저는 함수 내에서 선언된 변수에 접근할 수 있는 기능을 제공하며, 외부에서는 접근할 수 없습니다. 이를 통해 정보를 보호하고, 함수의 상태를 유지할 수 있습니다. 클로저를 사용하면 유연하고 강력한 코드를 작성할 수 있습니다.
<AI가 생성했어요!>
A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment). In other words, a closure gives you access to an outer function's scope from an inner function. In JavaScript, closures are created every time a function is created, at function creation time.
inner 함수에서 외부 scope로 접근할 수 있게 하는 것
렉시컬 환경이 뭐야? 렉시컬 환경은 변수와 함수의 식별자와 그들의 현재 값, 그리고 상위 스코프에 대한 참조를 포함하는 내부 데이터 구조입니다. 자바스크립트에서는 렉시컬 환경이 함수의 스코프 체인을 구성하는 중요한 역할을 합니다. 이를 통해 함수가 변수를 참조하고 수정할 수 있으며, 스코프에서 변수를 검색하는 메커니즘을 제공합니다. 렉시컬 환경은 클로저의 동작에 핵심적인 역할을 합니다.
<AI가 생성했어요!>
스크립트 전체, 코드 블럭, 함수들은 자신만의 렉시컬 환경을 가진다. 렉시컬 환경도 오브젝트
로 볼 수 있다. 렉시컬 환경은 환경 레코드와 외부 환경 참조로 구성되어있다.
환경 레코드 : 현재 실행중인 환경이 가지고 있는 변수와 같은 정보들을 가지고 있다.
외부 환경 참조 : 부모 렉시컬 환경을 참조하고 있다.
참조
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures