스코프의 개념은 심플하다.
(물론 깊게 들어가면 공부할거리가 매우 많다.)
[출처 : https://dmitripavlutin.com/javascript-scope/]
스코프는 위와같이 유효범위라고 정의 할 수 있다.
즉 작업 영역과도 비슷한 맥락이다.
전역변수를 선언하면 모든 곳에서 변수를 사용 가능하지만
현재 개발 추세에서는 전역변수를 남발하는것을 지양하고 있다.
그 말인 즉슨 우리는 스코프 단위로 작업장을 설정하여 해당 스코프에 선언된 변수들을 보호해 줌으로써 여러가지 나쁜 상황들을 예방 할 수 있다.
[출처 : https://dmitripavlutin.com/javascript-scope/]
스코프의 개념을 이해하면 클로져를 쉽게 이해 할 수 있다.
상위 함수는 내부 함수에 있는 변수를 가져 올 수 없는데 반대의 경우
즉 안쪽에 선언된 함수는 상위의 변수들을 가져 올 수 있다.
이를 잘 활용하면 내부 변수를 보호하면서 상위 변수를 여러가지 방법으로 활용 할 수가 있다.
이렇게 내부의 함수에서 상위의 변수를 활용하는 경우를 클로져라고 부르며
이는 마치 안에서 밖을 볼 수 있지만 밖에서는 안을 볼 수 없게 선팅을 한
차량 또는 유리와도 같다.
스코프에대한 이해가 있어야 클로져를 이해 할 수 있기 때문에 확실한 개념을 잡고 넘어갈 필요가 있다.