프로그래밍 언어/JavaScript

[자바스크립트 필기] #9 - 전역 변수의 문제점

2021. 8. 2. 11:31

 

*이 필기는 웹 프로그래밍 튜토리얼에서 보고 작성합니다. 

 

1. 변수의 생명 주기

변수는 생성되고 소멸되는 생명 주기가 있다. 

  • 전역 변수의 생명 주기는 프로그램의 생명 주기와 같다. 즉, 프로그램이 끝날 때 전역 변수도 끝난다는 말이다. 
  • 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료되면 소멸된다. - 지역 변수의 생명주기는 함수의 생명주기와 같다. 

그리고 다음의 예제를 보자 

var x = 'global';

function foo() {
    console.log(x); // ??
    var x = 'local';
}

foo();
console.log(x); // global

여기서 foo 함수 내부에서 console.log(x) 를 실행하기 전에 지역변수 x가 이미 선언되었고 undefined로 초기화 되었다. 따라서 console.log(x) 를 실행하면 undefined가 출력된다. 그리고 그 지역변수 x에 'local'이 할당된다. 

 

이런 현상을 호이스팅이라고 하는데 이런 호이스팅은 스코프를 단위로 실행된다.

  • 전역 변수의 호이스팅은 전역 변수의 선언이 전역 스코프의 선두(맨 처음)로 끌어 올려진 것처럼 작동한다. - 전역 변수는 전역 전체에서 유효하다. 
  • 지역 변수의 호이스팅은 지역 변수의 선언이 지역 스코프의 선두로 끌어 올려진 것처럼 동작한다. - 지역 변수는 함수 전체에서 유효하다. 

이 처럼 변수 선언이 스코프의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트의 고유 특징을 호이스팅이라고 한다.

 

2. 전역 변수의 문제점 

  • 암묵적 결합 - 전역 변수를 쓰게 되면 모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용하는 것이다. 따라서 코드의 가독성이 나빠지고, 의도치 않게 상태가 변경될 수 있는 위험성도 커진다.
  • 긴 생명 주기 - 생명 주기가 길기 때문에 메모리도 오랜 기간 소비한다. 
  • 스코프 체인 상에서 종점에 존재 - 변수를 검색할 때 전역 변수가 가장 마지막에 검색되므로 느리다. 
  • 네임스페이스 오염 - 다른 파일에서 동일한 이름으로 명명된 전역 변수로 인해 예상치 못한 결과를 가져올 수도 있다.

여기까지 입니다 - 틀린 점이 있다면 꼭 지적해주세요!

 

 

 

'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • [자바스크립트 필기] #11 - 생성자 함수와 객체 생성
  • [자바스크립트 필기] #10 - let, const 키워드
  • [자바스크립트 필기] #8 - 스코프
  • [자바스크립트 필기] #7 - 함수
SpaceCowboy
SpaceCowboy
공부한거 기록하는 블로그입니다!!
SpaceCowboy
공부한거 기록하는 블로그
SpaceCowboy
전체
오늘
어제
  • 분류 전체보기
    • 프로그래밍 언어
      • C Programming
      • JavaScript
    • Computer Science
      • 자료구조
      • 알고리즘
      • 객체지향
    • 프레임워크
      • Nest.js
      • TypeORM
    • Web Programming
    • 블록체인
      • 기초
    • 데브옵스
      • Git
      • Docker

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CSS
  • 재귀
  • 자바스크립트 필기
  • 복습
  • TypeORM
  • customrepository
  • typeorm3.0
  • JS
  • 자료구조
  • nestjs
  • HTML
  • typeormseeding
  • 자바스크립트챌린지
  • 자료구조필기
  • 자바스크립트필기
  • 자바스크립트
  • 논리삭제
  • softDelete
  • 이중연결리스트
  • typeorm0.3

최근 댓글

최근 글

hELLO · Designed By 정상우.
SpaceCowboy
[자바스크립트 필기] #9 - 전역 변수의 문제점
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.