FrontEngineer JungBam

전역 변수의 문제점 본문

자바스크립트 개념

전역 변수의 문제점

정밤톨 2022. 11. 18. 20:43

① 암묵적 결합

   - 전역에 변수를 선언하는 것은 코드 어디서든 참조하고 변경할 수 있는 암묵적 결합을허용하는 것

   - 변수의 스코프가 클수록 해당 변수의 목적이 애매해지고 사용되는 기능이 많아질수록 가독성이 떨어지게 됨.

   - 또한 암묵적 결합으로 인한 의도치 않은 변경으로 인한 위험성도 동반된다.

② 긴 생명주기

   - 생명주기란 것은 결국 메모리 자원을 할당하고 있는 기간인데 전역에 선언하는 것은 코드가 끝날 때까지 생명주기를 부여하는 것과 같다. 생명주기가 긴 객체들이 많다는 것은 그만큼 메모리 자원이 많이 할당된다는 것이고 의도치 않은 스코프에서 의도치 않게 변경 조작되어 생각치 못한 런타임 에러를 가져올 수 있다.

③ 스코프 체인 종점에 존재

   - 스코프 체인이란 변수를 찾는 자바스크립트의 방식으로 현재 스코프에서 찾지 못했을 경우 상위 스코프로, 상위 스코프에서 찾지 못하면 차상위 스코프로 그 변수를 찾아올라가는 일련의 동작을 말하는데 전역변수는 스코프 체인의 종점에 위치하여 변수의 검색속도가 가장 느리다.

④ 자바스크립트의 경우 파일이 분리되어 있어도 전역 스코프는 공유한다. 이런 경우 내가 생각하지 못한 곳에서 변경되었을때, 그 원인을 찾기 매우 힘들다.

 

그럼 해결법으로는 어떠한 방법이 있을까?(코딩간 지향해야하는 권장사항)

① 즉시 실행 함수
② 네임 스페이스 객체 : 객체의 프로퍼티나 메소드로 만드는 것
③ 모듈 패턴
     const a = ()=>{
                            private 공간 : 외부에서는 호출되지 않음.
     return {
                            public 공간 : 외부에 노출됨.
      }  
   }


+ ES6 의 모듈시스템(별도 정리)

 

반응형

'자바스크립트 개념' 카테고리의 다른 글

deep to 클로저  (0) 2022.11.23
Deep to 함수 (JavaScript)  (0) 2022.11.22
var에서 let, const로 바뀐 이유  (0) 2022.11.18
깊은 복사와 얕은 복사  (0) 2022.11.18
JavaScript의 타입 / 자료구조  (0) 2022.11.18
Comments