전역변수의 문제점

Jun Hyoung Park·2022년 7월 12일
0

변수의 생명주기

지역변수의 생명주기

  • 함수 생명 주기
    • 생명주기: 참조하고 있는지 아닌지의 여부에 따라 결정된다
  • 필요성
    • 생명주기가 없다면 한번 선언된 변수는 종료 이전까지 영원히 메모리 공간을 점유

전역변수의 생명주기

  • 전역객체의 생명주기와 같다
    • 전역객체: 코드 실행 전에 자바스크립트 엔진에 의해 가장 먼저 생성되는 객체(window)

전역변수의 문제점

암묵적 결합

  • 모든 코드가 전역변수를 참조하고 변경 허용
  • 가독성이 나빠짐
  • 의도치 않게 상태 변경

긴 생명주기

  • 메모리 리소스 오래 소비

스코프체인 상에서 종점에 존재

  • 검색 속도가 가장 느리다

네임 스페이스 오염

  • 파일이 분리되어 있다 해도 하나의 전역 스코프를 공유
  • 이름이 같아 예상치 못 한 결과를 초래한다

전역 변수의 사용을 억제하는 방법

즉시 실행 함수

  • 함수 정의와 동시에 호출되며 단 한번만 호출
  • 모든 코드를 즉시 실행 함수로 감싸면 모든 변수는 실행 함수의 지역변수
 (function(){
   let a=3;
 }());

네임 스페이스 객체

  • 전역변수처럼 사용하고 싶은 변수를 프로퍼티로 추가
  • 객체를 프로퍼티로 추가해서 계층적으로 구성할 수 있다
  • 네임 스페이스 객체 자체가 전역변수에 할당되므로 유용하지 않다
let name ={};
name.person ={name:'lee'};

모듈패턴

  • 클래스를 모방해서 관련있는 변수와 함수를 모아 즉시 실행 함수로 감싸 하나의 모듈형성
profile
프론트엔드 지망생

0개의 댓글