잠깐 시간내어 공부하는 전역변수쓰
전역변수
전역변수는 var로 많이 알고 있다.
최근에는 아이에 안 쓰이는 변수이다.
지금부터 우리 친구 var가 왜 안 쓰이는지 알아보도록 하자.
변수의 생명주기
생명주기.. react에서만 들었는데 알고보니 변수에도 생명주기가 있었다.
우리가 만드는 모든 변수는 생명주기를 갖고 있다.
선언에 의해 생성되고 할당을 통해 값을 가지다가
사용되지 않을 때 소멸하게 된다.
소멸하지 않으면.. 우리의 메모리 공간이 부족해잉.
그렇다면 언제 생성되고 소멸되는지 알아야한다.
우선 변수는 자신이 선언된 곳에서 생성되고 소멸한다.
전역 변수의 생명 주기는 어플리케이션의 생명 주기와 같고
지역 변수는 함수가 호출 될 때 생성, 종료될 때 소멸하게 된다.
이 차이점은 매우 크다.
전역 변수 같은 경구는 런타임 이전에 이미 생성이 된다.
그래서 우리가 사용하지 않았을 때부터 이미 메모리 공간을 차지하고 있다.
반면, 지역 변수는 우리가 함수를 호출하지 않으면 생성되지 않고,
함수가 종료됨과 따라 바로 소멸하기에 메모리 공간에 부담이 덜하다.
전역 변수의 생명주기
또한 우리가 var로 만든 변수들은 전역 객체의 프로퍼티로 만들어 진다.
즉, 우리가 window 웹페이지를 닫기 전까지 사용하지 않는 전역 변수들은 계속 살아있는 것이다.
전역 변수의 문제점
암묵적 결합
전역 변수는 모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용한다.
전역 변수의 범위가 클수록 가독성이 나빠지고 의도치 않게 변경될 수 있다.
긴 생명주기
생명주기가 에플리케이션과 동일하기에 메모리 리소스를 오래 차지하고 있다.
스코프 체인 상 종점에 존재
전역 변수는 스코프 체인 상 마지막에 존재한다.
이것은 검색할 때 가장 마지막에 검색하는 것을 의미하고, 이는 곧 속도와 연결된다.
네임스페이스 오염
파일을 분리해도 전역 변수는 공유된다.
그래서 동일한 이름으로 변수를 만들 수 없다.
그러니 우리 모두 지역 변수만 사용하자