Search

11장 전역 변수 문제점

대분류
언어
서적
소분류
JS DeepDive
태그
변수 생명 주기
전역변수
const
let
var
최종 편집 일시
2024/10/27 15:41
생성 일시
2024/01/25 10:49
14 more properties

변수의 생명 주기

지역 변수의 생명 주기

지역 변수의 생명주기는 함수의 생명주기와 일치

전역 변수의 생명 주기

var 키워드로 선언한 전역 변수의 생명주기는 전역 객체의 생명주기와 일치
클라이언트(브라우저)의 전역객체: window
서버사이드의 전역객체: global

전역 변수의 문제점

암묵적 결합
모든 코드가 전역 변수를 참조하고 변경할 수 있는 것
긴 생명 주기
메모리 리소스를 오랜 기간 소비하고 변수의 상태를 변경할 수 있는 기간과 기회가 많아짐
스코프 체인 상에서 종점에 존재
전역 변수의 검색 속도가 가장 느림
네임스페이스 오염
JS는 파일이 분리되었다 하더라도 하나의 전역스코프를 공유하여 동일한 이름의 전역 변수나 함수가 같은 스코프 내에 존재할 시 예상치 못한 결과를 일으킴

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

가능한 한 지역변수를 사용하여 변수의 스코프를 좁게 만드는 것이 좋다!

즉시 실행 함수

모든 코드를 즉시 실행 함수로 감싸 모든 변수는 즉시 실행 함수의 지역변수가 되게 만든다.
--> 전역변수를 생성하지 않아서 라이브러리 등에서 자주 사용

네임 스페이스 객체 - 잘 안씀

전역에 네임스페이스 객체 생성하여 사용할 변수를 프로퍼티로 추가함

모듈 패턴

클로저 기반으로 동작함. -->
var Counter = (function () { var num = 0; return { increase() { return ++num; }, decrease() { return --num; } }; }());
JavaScript
복사
퍼블릭 멤버(increase, decrease 함수) : 객체의 프로퍼티중 외부에 노출되는 것
프라이빗 멤버(num) : 외부에 노출되지 않는 것

ES6 모듈

ES6 모듈은 파일 자체의 독자적인 모듈 스코프를 제공