상세 컨텐츠

본문 제목

[Codecademy-JavaScript] 5장 SCOPE

22-23/22-23 리액트 스타터 3

by YUZ 유즈 2022. 9. 22. 10:03

본문

728x90

 스코프(범위)는 프로그래밍에서 중요한 개념으로, 변수가 선언되는 구역입니다. 전역 변수는 프로그램 내 어디에서나 접근 가능하지만 지역 변수는 특정 구역에서만 사용할 수 있습니다.

 

1. 블록 및 스코프 (Blocks and Scope)

 스코프에 대해 이야기하기 전에 먼저 블록에 대해 이야기를 하자면, 블록은 {중괄호} 안에 있는 코드를 말합니다. 다음 예시는 if 명령문에서 사용된 블록입니다.

 이처럼 블록은 하나 이상의 명령문을 함께 그룹화하는 데 도움이 되며 코드의 구조를 표시하는 데 중요한 역할을 합니다.

 

2. 전역 스코프 (Global Scope)

 변수는 블록 외부 또는 내부에 존재할 수 있기 때문에 블록과 관련하여 스코프를 생각합니다. 전역 스코프에서 변수는 블록 외부에서 선언되며, 이러한 변수를 전역 변수라고 합니다. 전역 변수는 블록의 코드를 포함하여 프로그램의 모든 코드에 접근 가능합니다.

 전역 스코프의 예를 살펴보겠습니다.

위 코드에서 변수 satelite, galaxy, stars는 전역 스코프에 정의되어 있는 전역 변수이기 때문에 함수 callMyNightSky 블록 내에서도 변수로 사용이 가능하다는 것을 알 수 있습니다.

 

3. 블록 스코프 (Block Scope)

 블록 스코프에서 변수는 블록 내부에 정의되며, {중괄호} 안의 코드에서만 사용이 가능합니다. 변수는 해당 블록 내에서만 사용이 가능하기 때문에 이를 지역 변수라고 합니다.

 블록 스코프의 예를 살펴보겠습니다.

위 코드를 보면, 함수 내에서 변수 color는 함수의 중괄호 내에서만 사용할 수 있으며, 함수 외부에서 변수 color를 사용하려고 했을 경우 오류가 나는 것을 알 수 있습니다.

 

4. 스코프 오염 (Scope Pollution)

 전역 변수를 선언하면 전역 스코프 정보를 포함하는 코드의 공간인 전역 네임스페이스로 이동합니다. 전역 네임스페이스를 사용하면 프로그램의 어디에서나 변수 사용이 가능하여, 전역 변수는 프로그램이 완료될 때까지 그대로 유지됩니다. , 전역 네임스페이스가 매우 빨리 채워질 수 있다는 것입니다.

 스코프 오염은 전역 네임스페이스에 너무 많은 전역 변수가 있거나 다른 범위에서 변수를 재사용할 때 발생합니다. 스코프 오염은 다양한 변수를 추적하기 어렵게 만들고 잠재적인 사고를 일으킬 수 있습니다. 예를 들어, 전역 스코프 변수는 지역 스코프 변수와 충돌하여 코드에서 예기치 않은 동작을 일으킬 수 있습니다. 다음은 스코프 오염이 발생한 코드입니다.

 위 코드에서 전역 변수 num50으로 선언되었지만, 함수 logNum이 호출되었을 때 함수 내에서 num 값이 100으로 재할당되어 전역 변수에 영향을 주게 됩니다. 따라서 전역 스코프가 무엇인지 아는 것은 중요하지만 전역 스코프에서 변수를 정의하지 않는 것이 가장 좋습니다.

 

5. 좋은 스코프 지정하기

 스코프 오염이 일어나지 않게 하기 위해서는 블록 스코프를 사용하여 가능한 한 밀접하게 변수 스코프를 지정해야 합니다. 변수 스코프를 엄격하게 지정하면 다음과 같은 여러 면에서 코드가 크게 향상됩니다.

 첫째, 블록이 코드를 구분해주므로 코드를 더 읽기 쉬워집니다.

 둘째, 어떤 변수가 프로그램의 다른 부분과 연결되어 있는지 추적할 필요 없이 명확하게 해주기 때문에 코드를 더 쉽게 이해할 수 있습니다.

 셋째, 코드가 모듈식이므로 코드를 유지 관리하는 것이 더 쉽습니다.

 넷째, 블록 실행이 끝나면 메모리가 더 이상 존재하지 않기 때문에 메모리가 절약됩니다.

728x90

관련글 더보기