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 스코프나누기 고민하라.
전역공간에 대한 내용은 기존에도 알고 있었기에 조금 더 이해가 쉬웠다.
'언어 > Javascript' 카테고리의 다른 글
[클린코드 javascript] 분기로 보여지기 쉬운 코드 만들기(분기 다루기) (0) | 2022.07.26 |
---|---|
[클린코드 javascript] 자리를 잘 지키자. (0) | 2022.07.26 |
콜백함수(callback) (0) | 2022.07.25 |
[클린코드 javascript] 타입 체크 (0) | 2022.07.23 |
[클린코드 Javascript] 임시변수 제거. (0) | 2022.07.21 |