본문 바로가기

언어/Javascript

[클린코드 Javascript] 전역 공간 신경쓰기

 

1학년때 배우기로, 전역변수는 프로그램 생명주기 처음부터 끝까지 살아있기에 지양해야한다고 배웠다. 즉, 실행이 끝날 때 까지 메모리 공간을 차지하기 때문에, 메모리 부족의 원인이 될 수 있다.

또한 전역 변수는 어떤 함수에서든지 접근이 가능하기 때문에, 멀티 태스킹 환경에서 예상치 못한 문제를 일으킬 수 있다.

----------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

여기서 자바스크립트 한 스푼을 추가하자면, 자바스크립트는 브라우저 환경의 경우 window객체가 가장 상위 객체, Node.js의 경우 global이 가장 상위 객체이다.

+a ) 실제로 찾아보니, window아래에는 screen, document ,String같은 객체들이 있었고, document객체가 웹사이트 전담이다.

+a ) 그렇기에 window.parseInt()해도 실행된다. 가장 상위객체이기때문.

 

그렇기에 추측가능하듯이, js 파일을 나누어도 이것의 상위객체는 항상 window(global) 이기에, 한곳에서 생성한 변수는 다른곳에서 사용한다면 문제를 발생한다.강의 예시 ->setTimeout

 

 

요약 정리

전역공간 더럽히지 않기이유 : 어디서나 접근 가능. 스코프 분리가 매우 위험- > 자바스크립트의 자유도가 매우 높음을 볼수 있었음...

 

해결 : 전역변수 사용 지양, 지역변수 지향, window, global에 접근하며 조작하지 않기!const, let 사용 지향, IIFE, Module closure 스코프나누기 고민하라.

 

전역공간에 대한 내용은 기존에도 알고 있었기에 조금 더 이해가 쉬웠다.