
- 전역변수로 생성하면 중간에 값이 바뀔 때 보호할 수 없다.
- 값이 변경 되는것을 방지하기위해 함수안쪽 지역변수로 생성해보자. 계속 1이 리턴된다. (지역변수는 한번리턴되면 사라진다.)
- 계속 1로 리턴 되는 것을 해결하기 위해 increment함수를 함수로 리턴해준다.
그리고 inc 상수 변수에 increment함수를 넣어준다. 즉, inc에는 리턴된 함수가 들어간 것이다.
icrement함수를 리턴할때 savsNumber는 사라지지만 클로저 공간에 남아있다. 때문에 inc함수에서 savsNumber를 리턴 할 수 있는 것이다. 첫번째 값을 콘솔 찍으면 1이나오고 2번째 값을 콘솔 찍으면 2가나오는데 savsNumber가 +1 증가된 값이 클로저에 들어가기 때문이다.- 클로저를 사용하면 장점
- 특정값을 보호하면서 그 값을 계속사용할 수 있다.
- 변수를 보호 했기 때문에 바깥쪽에서 접근할 길이 없다. 코드상에서 접근 불가능.
- 보호되어야 하는 값이 필요하면 클로저 공간에 넣는다.
<타입 스크립트는 보호할 변수 앞에 private를 붙여주면 끝나지만 자바스크립에는이런 스펙이 없으니까>..