디바운스 코드 이해 => 클로저 개념 필요 => 실행 컨텍스트 개념 필요
이런 흐름으로 여기까지 왔다...
const makeFunc = () => {
let name = "기쁨이";
const displayName = () => {
console.log(name);
};
return displayName;
};
const myFunc = makeFunc(); // myFunc 변수에 [Function: displayName] 저장
makeFunc()가 호출된 결과로 displayName 함수가 리턴되어 myFunc 변수에 저장된다.
그리고 makeFunc의 실행 컨텍스트는 사라질 것이다.
근데 displayName 함수 내에서 makeFunc의 실행 컨텍스트에 존재할 name 변수에 어떻게 접근?
makeFunc의 실행 컨텍스트는 소멸되지만, makeFunc의 실행 컨텍스트의 AO (활성 객체)는 유효
클로저 : 자신이 선언됐을 때의 환경을 기억하여, 밖에서 호출되어도 그 환경에 접근할 수 있는 함수
언제 사용? 현재 상태를 기억해서 계속 갱신해야하는 경우
전역 변수로도 가능한데 왜 사용?
누구든지 접근할 수 있는 전역변수로 선언하면 의도치 않은 값 변경이 이루어질 위험이 있음 (즉 프로그램의 안정성을 높이기 위해)
참고 사이트 : https://poiemaweb.com/js-closure