1. 클로저의 개념
참고: https://poiemaweb.com/js-closure
lexical scoping : 변수가 어디에서 사용 가능한지 알기 위해 그 변수가 소스코드 내 어디에서 선언되었는지 고려한다는 것을 의미
중첩된 함수는 외부 범위(scope)에서 선언한 변수에도 접근할 수 있다.
자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부 함수 밖에서 내부함수가 호출되더라도 외부함수의 지역변수에 접근할 수 있다.
클로저는 반환된 내부함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프) 밖에서 호출되어도 그 환경(스코프) 내에 접근할 수 있는 함수
let과 const를 사용한 범위 지정 *
시간상 사각지대: 코드의 실행 순서에 의해 형성 초기화 하기 전에는 읽거나 쓸 수 없음
2.클로저의 활용
클로저가 가장 유용하게 사용되는 상황은 현재상태를 기억하고 변경된 최신 상태를 유지하는 것
// 함수 innerFunc가 함수 outerFunc의 내부에 선언된 내부함수이므로 함수 innerFunc는 자신이 속한 렉시컬 스코프(전역, 함수 outerFunc, 자신의 스코프)를 참조
// 내부함수가 자신을 포함하고 있는 외부함수의 변수에 접근할 수 있는 것 => 렉시컬 스코핑 스코프 체인의 검색에 의해
3. 모듈 패턴
4. 클로저 스코프 체인
모든 클로저에는 세가지 스코프{범위}가 있다.
지역 범위(Local Scope, Own scope)
외부 함수 범위(Outer Function Scope)
전역 범위(Global Scope)
'Java script' 카테고리의 다른 글
자바스크립트-프로토타입2_자바스크립트와 객체 지향 프로그래밍 (0) | 2022.09.19 |
---|---|
JavaScript_자바스크립트 Math.random() 활용-랜덤 뽑기 (0) | 2022.09.08 |
JavaScript_자바스크립트 Math.random() 외 난수 생성하는 방법 (0) | 2022.08.16 |
JavaScript_프로토타입1 (0) | 2022.08.16 |
Javascript_이메일 형식 확인 정규식, 핸드폰 번호 형식 자동 적용 정규식 (0) | 2022.08.09 |