변수 선언 시 주의할 점
먼저 브라우저에만 존재하는 window 객체에 대해 알아보자. 지금 개발자 도구를 열어 콘솔에 window 라고 입력하면 객체 하나를 조회할 수 있다. 이 객체는 사실 브라우저의 창(window)을 의미하는 객체이지만, 이와 별개로 전역 영역을 담고 있기도 하다. 함수 선언식으로 함수를 선언하거나, var로 전역 변수를 만들면, window 객체에서도 동일한 값을 찾을 수가 있다.
전역 변수는 가장 바깥 스코프에 정의한 변수이다. 따라서, 어디서든 접근이 가능하기에 얼핏 "모든 변수를 바깥으로 빼면 스코프 걱정을 하지 않아도 되겠네?" 라는 생각이 들 수도 있다. 전역 변수를 많이 만드는 것은 편리할 수는 있겠으나 그다지 좋은 선택이 아니다.
보통 애플리케이션을 만들 때에는, 내가 직접 작성하지 않은 수많은 다른 함수와 로직이 포함된다. 너도나도 똑같은 이름으로 전역 변수를 선언하려고 한다면 분명 문제가 발생할 것이다. 다른 함수 혹은 로직에 의해 의도되지 않은 변경이 발생하는 것을 side effect라고 하며, 전역 변수를 최소화하는 것은 side effect를 줄이는 좋은 방법이 된다.
var 키워드 쓰지 않기
var 키워드는 블록 스코프를 무시한다. 또한 재선언을 해도 에러를 내지 않는다. 전역 변수를 var로 선언하는 것은 브라우저의 내장 기능을 사용하지 못하게 만들 수도 있다.
728x90
'FE > JavaScript' 카테고리의 다른 글
[JS] 클로저 활용 (함수, 커링, 모듈) (0) | 2023.03.03 |
---|---|
[JS] 클로저 (0) | 2023.03.03 |
[JS] 스코프(Scope) (0) | 2023.03.02 |
[JS] 얕은 복사와 깊은 복사 (0) | 2023.03.02 |
[JS] 원시 자료형과 참조 자료형 (0) | 2023.03.02 |