[WHAT]전역 변수의 문제점

WHAT

 ⋅ Nov 30, 2023 ⋅ 1 min read

Problem
Problem

변수의 생명 주기

변수는 선언에 의해 생성되고 할당을 통해 값을 갖습니다. 변수는 자신이 선언된 위치에서 생성되고 소멸합니다. 지역 변수의 생명 주기는 함수의 생명 주기와 동일합니다. 함수가 호출된 직후 함수 몸체의 코드가 한 줄씩 순차적으로 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행됩니다. 전역 변수의 경우 함수와 달리 전역 코드는 명시적인 호출과 종료가 없기 때문에 전역 코드와 생명 주기가 동일합니다.

전역 변수의 문제점

1. 암묵적 결합

전역 변수를 선언한 이유는 코드의 어느 영역에서나 참조하고 할당할 수 있는 변수를 사용하겠다는 뜻입니다. 이는 모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용하는 것입니다. 변수의 유효 범위가 넓어질수록 코드의 가독성을 저하시키고 의도치 않는 변경을 유발할 수 있습니다.

2. 긴 생명 주기

전역 변수는 생명 주기가 길기 때문에, 그만큼 메모리 리소스도 사용하게 됩니다. 또한, 전역 변수의 상태를 변경할 수 있는 시간이 길고 기회도 많게 됩니다. 반면에, 지역 변수는 전역 변수보다 생명 주기가 짧고 메모리 리소스 사용도 적기 때문에 오류 발생 확률이 적습니다.

3. 스코프 체인 상에서 종점 존재

변수 검색 시 전역 변수가 사장 마지막에 검색되는 스코프 체인 상의 종점에 존재합니다. 따라서, 전역 변수의 검색 속도가 가장 느리기 때문에 성능 저하가 발생할 수 있습니다.

4. 네임스페이스 오염

자바스크립트의 문제점 중 하나는 파일이 분리되어 있더라고 하나의 전역 스코프를 공유한다는 것입니다. 만약의 경우, 각각 다른 파일에 동일한 이름의 변수가 존재한다면 예상하지 못한 결과를 가져올 수 있습니다.

전역 변수 사용 억제법

https://lcy042000.github.io/not-global-variable-method


참고

이웅모, ⌈모던 자바스크립트 - Deep Dive⌋, 2020, 14_전역 변수의 문제점(p.204 - 207)

LINKS

© Copyright 2021

made by React.js & gatsby