Web/JavaScript
Scope
prime070
2020. 9. 2. 09:42
스코프(범위, Scope)는 코드가 실행되고 있을 때, 어떤 변수에 접근할 수 있는지에 대한 답을 알려준다. 자바스크립트에서는 기본설정(default)으로 window 오브젝트에 있는 root scope 설정되어 있다.
예를 들어, 개발자 도구의 콘솔탭에서 콘솔창에 test를 출력하는 함수 aa를 정의한다. 그러면 window 객체의 내부에 함수 aa가 생긴 모습을 확인할 수 있다. 함수 aa가 정의되면서 window를 부모로 두기 때문에, root scope는 parent scope라고 부르기도 한다.
그렇다면 다음과 같은 상황에서는 어떻게 될까? 함수 bb가 있다. 내부에는 변수 a가 hello라는 문자열로 초기화되어 있다. 이 상황에서 콘솔창에 변수 a를 출력을 할 수 있을까?
출력을 할 수 없었다. 왜냐하면 변수 a는 함수 bb 내부에서 선언됐기 때문에 함수의 바깥에서는 접근할 수 없는 것이다. a에 접근하기 위해서는 함수 bb를 통해 접근해야만 한다.
하지만 반대로, root scope에 선언된 변수를 함수 bb에서는 사용할 수 있다.