Mission. 클래스, 클로저를 활용하는 능력 갖추기
1) 목적
- Class 문법의 주요 개념을 이해하고 활용하기 위해서
- 로직을 안전하게 변경하고 유지하기 위해서
2) 방법
- 클래스, 인스턴스, getter, setter, 상속, static method 등 학습하기
- 렉시컬 스코프에 대해 이해하고 increase 함수 학습하기
- 예제를 통해 기초 다지기
3) 봉착한 문제
- 카운트 상태(num 변수의 값)는 increase 함수만이 변경할 수 있게 하기
let num = 0; const increase = function () { return ++num; }; console.log(increase()); // num = 100; // 치명적인 단점이 있어요. console.log(increase()); console.log(increase());
4) 시도
- num을 지역변수로 바꾸기
const increase = function () { let num = 0; return ++num; }; console.log(increase()); console.log(increase()); console.log(increase());
1-1. 리뷰
- 카운트 상태는 increase 함수만이 변경할 수 있게 했다.
- increase()가 호출될 때마다 num이 초기화 된다.
- 클로저 사용하기
const increase = (function () { let num = 0; return function () { return ++num; }; })(); console.log(increase()); console.log(increase()); console.log(increase());
2-1. 리뷰
- 즉시 실행 함수가 반환한 클로저는 카운트 상태를 유지하기 위한 자유 변수 num을 언제 어디서 호출하든지 참조하고 변경할 수 있다.
5) 알게된 점
- 클로저는 상태가 의도치 않게 변경되지 않도록 안전하게 은닉하고 특정 함수에게만 상태 변경을 허용하여 안전하게 변경하고 유지하기 위해 사용된다는 것을 알게 되었다.