스코프(Scope)
- 스코프(Scope)라는 영어 단어 자체는 ‘범위’라는 의미를 가진다.
- JavaScript 에서도 ‘범위’의 의미를 가지고 있다.
스코프란?
식별자 접근 규칙에 따른 유효 범위
- 스코프의 정의는 식별자 접근 규칙에 따른 유효 범위이다.
- 식별자(변수, 함수, 클래스)에 접근할 수 있는 범위가 존재한다.
- 범위는 중괄호(블록) 또는 함수에 의해 나눠진다. 그 범위를 스코프라고 부른다.
- 그래서 각각을 Block Scope와 Function Scope라고 부른다.
스코프의 주의 사항
1. 안쪽 스코프에서 바깥쪽 스코프로 접근할 수 있지만 반대는 불가능하다.
- 바깥쪽 스코프에서 선언한 식별자는 안쪽 스코프에서 사용 가능하다.
- 반면, 안쪽에서 선언한 식별자는 바깥쪽 스코프에서는 사용할 수 없다.
2. 스코프는 중첩이 가능하다.
- 스코프는 마치 중첩된 울타리와도 같다.
3. 전역 스코프와 지역 스코프
- 가장 바깥쪽의 스코프를 전역 스코프(Global Scope)라고 부른다.
- 전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)이다.
4. 지역 변수는 전역 변수보다 우선순위가 더 높다.
- 전역 스코프에서 선언한 변수는 전역 변수이다.
- 지역 스코프에서 선언한 변수는 지역 변수이다.
- 지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.
5. 스코프의 종류
- 스코프의 두가지 종류 블록 스코프와 함수 스코프가 있다.
- 화살표 함수는 함수 스코프가 아니다.
- 주의해야할 점은 화살표 함수는 블록 스코프로 취급된다.
전역 변수는 최소화하기
- 가장 바깥 스코프에 정의한 변수가 전역 변수이다.
- 즉, 어디서든 접근이 가능하다.
- 전역 변수를 최소화 하면 side effect(의도하지 않은 로직에 의해 문제 발생)를 줄일 수 있다.
- 그런데 그러한 전역 변수를 심지어 var로 선언하는 경우 문제가 될 수 있다.
- 전역 변수는 어디서나 접근이 가능하다.
- var 키워드는 블록 스코프를 무시한다.
- 재선언과 재할당을 할 수 있다.
- 전역 변수를 var로 선언해서 브라우저의 내장 기능을 못하게 만들 수도 있다.
'TIL' 카테고리의 다른 글
| TIL JS ES6에 추가된 것들 (1) | 2022.10.19 |
|---|---|
| TIL 객체지향(OOP) VS 절차지향(PP) 프로그래밍 (1) | 2022.10.18 |
| TIL HTTP vs HTTPS 차이점 (0) | 2022.10.18 |
| TIL 상태관리를 왜 할까요? 그리고 평소 state 관리는 어떻게 하시나요? (0) | 2022.10.18 |
| TIL SSR과 CSR 개념과 차이점 (0) | 2022.10.18 |