Javascript에서(다른 언어에서도 마찬가지지만), 변수나 함수를 전역 범위에서 선언하는 것은 두 가지 이유로 인해 권장하지 않는다.
1. Tight coupling
2. Name collisions
Tight Coupling
Tight coupling이란, 각각의 코드들이 서로 지나치게 의존적인 상황이 되는 것을 말한다. coupling이란 두 아이템의 쌍이 함께하는 것을 뜻하는데, 즉 tight coupling은 서로 다른 두 묶음의 코드들이 서로 의존적이어서 어느 한 쪽에 의도치 않은 변화를 일으키는 상황을 뜻한다.
var instructor = 'Richard';
function richardSaysHi() {
console.log(`${instructor} says 'hi!'`);
}
위의 코드에서 richardSaysHi() 함수는 global에 선언된 instructor 변수를 참조하고 있다. 만약 여기서 instructor를 teacher로 바꿔 버린다면? richardSaysHi() 함수는 제대로 동작하지 않을 것이고 내부를 수정해줘야 한다. 이것이 tightly-coupled 코드의 간단한 예시다.
Name Collisions
Name collision이란, 두 개의 함수가 같은 이름을 가진 변수 하나에 의존하게 되는 것을 뜻한다. 이 경우 문제가 되는 것은 두 함수 모두에서 변수값을 변경하거나 설정하려는 경우, 어느 한 쪽의 변경이 다른 한쪽에 영향을 미치기 때문이다.
'Javascript' 카테고리의 다른 글
Ajax with jQuery (0) | 2018.07.03 |
---|---|
Ajax with XHR (0) | 2018.07.03 |
[Javascript] 기본 매개변수(Default Function Parameters) (0) | 2018.06.12 |
[Javascript] 프로토타입 상속(Prototypal Inheritance) (0) | 2018.06.02 |
[Javascript] Closure, 그리고 IIFE의 활용 (2) | 2018.05.03 |
댓글