브라우저에는 브라우저 창을 대표하는 window 객체가 존재하는데, 여기에는 브라우저 창과 관계 없이 전역 항목도 담고 있다.
함수 선언식이나 var로 전역 변수를 만들면 window 기능에 덮어 씌워질 가능성이 있다.
어디서든 접근할 수 있는 전역 변수가 편리할 수 있지만, 다른 함수 또는 로직에 의해 의도치 않은 변경이 발생될 수 있다. 전역 변수를 줄이는 것 만으로도 side effect를 줄일 수 있다.
동일한 스코프에서 같은 이름의 스코프를 재선언하는 행위는 버그를 유발한다.
선언 키워드(const
, let
) 없이 변수를 할당하면, var로 선언한 경우처럼 전역 변수로 취급된다.
(Strict Mode 사용 시 방지 가능)