본문 바로가기
Javascript

[Javascript] Global 변수, Global 함수가 좋지 않은 이유

by kmmguumnn 2018. 6. 26.

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이란, 두 개의 함수가 같은 이름을 가진 변수 하나에 의존하게 되는 것을 뜻한다. 이 경우 문제가 되는 것은 두 함수 모두에서 변수값을 변경하거나 설정하려는 경우, 어느 한 쪽의 변경이 다른 한쪽에 영향을 미치기 때문이다.









댓글