FrontEngineer JungBam
전역 변수의 문제점 본문
① 암묵적 결합
- 전역에 변수를 선언하는 것은 코드 어디서든 참조하고 변경할 수 있는 암묵적 결합을허용하는 것
- 변수의 스코프가 클수록 해당 변수의 목적이 애매해지고 사용되는 기능이 많아질수록 가독성이 떨어지게 됨.
- 또한 암묵적 결합으로 인한 의도치 않은 변경으로 인한 위험성도 동반된다.
② 긴 생명주기
- 생명주기란 것은 결국 메모리 자원을 할당하고 있는 기간인데 전역에 선언하는 것은 코드가 끝날 때까지 생명주기를 부여하는 것과 같다. 생명주기가 긴 객체들이 많다는 것은 그만큼 메모리 자원이 많이 할당된다는 것이고 의도치 않은 스코프에서 의도치 않게 변경 조작되어 생각치 못한 런타임 에러를 가져올 수 있다.
③ 스코프 체인 종점에 존재
- 스코프 체인이란 변수를 찾는 자바스크립트의 방식으로 현재 스코프에서 찾지 못했을 경우 상위 스코프로, 상위 스코프에서 찾지 못하면 차상위 스코프로 그 변수를 찾아올라가는 일련의 동작을 말하는데 전역변수는 스코프 체인의 종점에 위치하여 변수의 검색속도가 가장 느리다.
④ 자바스크립트의 경우 파일이 분리되어 있어도 전역 스코프는 공유한다. 이런 경우 내가 생각하지 못한 곳에서 변경되었을때, 그 원인을 찾기 매우 힘들다.
그럼 해결법으로는 어떠한 방법이 있을까?(코딩간 지향해야하는 권장사항)
① 즉시 실행 함수
② 네임 스페이스 객체 : 객체의 프로퍼티나 메소드로 만드는 것
③ 모듈 패턴
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