[JS] 전역 변수의 문제점

소연·2024년 2월 15일

일러두기

본 글은 ‘모던 자바스크립트 Deep Dive’ 14장, ’전역 변수의 문제점’을 참고하여 작성되었습니다.

요약

  1. 변수의 스코프는 좁을수록 좋다
  2. 전역 변수는 정말 되도록이면 사용하지 말자
    • 코드의 가독성이 떨어진다
    • 스코프 체인상의 종점에 존재하므로 변수 검색 소요 시간이 길어진다
    • 네임스페이스의 오염을 야기 (의도치 못한 값 변경 발생)

스코프 이해하기

var x = 'global';

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

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

호이스팅은 변수선언이 ‘스코프의’ 선두로 끌어올려진 것처럼 동작하는 것이므로

function foo 내부에 선언된 x는 자신의 스코프인 함수 foo의 상단으로 끌어올려진 것처럼 동작하게 된다.

따라서 foo 내부의 console 문에서는 변수 x가 선언과 동시에 초기화 되며 할당되었던 undefined가 출력되고,

그 아래의 console 문에서의 x는 스코프 내에 선언 및 할당되어있던 ‘global'을 참조하게 된다.

0개의 댓글