지역변수(local variable)와 전역변수(global variable)가 무엇이고 이를 구분하는 목적등에 대하여 알아보고자 한다.

# 지역변수와 전역변수란 무엇인가?


; 지역변수는 일정한 또는 지정된 지역(스코프 scope 라고 함)에서만 사용할 수 있는 특정한 변수를 의미한다. 이에반해 전역변수는 모든 영역에서 사용할 수 있는 변수를 말한다. 결국 전역변수를 선언하면 코드의 {}(블록영역), 내부함수, 외부함수 등의 영역에 상관없이 어디서든 불러와 사용할 수 있다. 하지만 지역변수는 문법적 영역인 선언된 위치에 따라 해당 영역(scope)이 결정되게 된다.

# 지역변수와 전역변수를 구분하는 이유는?


; 개발자는 코딩을 하면서 생각할 부분들이 많다. 메모리등의 자원관리도 생각해야하고 변수가 내부코드 또는 사용중인 라이브러리나 플러그인을 통해 충돌할 수 있는 부분까지 생각할 필요가 있다. 만약 전역변수를 남발하게 될 경우 이런 충돌로 부터 만든 웹 어플리케이션이 에러를 발생하게 되므로 이를 감안하여 최대한 전역변수의 사용을 줄이는 것이 현명하다고 하겠다.

# 지역변수 사용시 생각할 고민


; 지역변수를 선언하면 선언된 함수의 범위안에서만 사용가능하며 다른 위치의 함수에서는 사용이 불가능하다. 물론 함수내의 내부 함수에는 그 영역이 상속되므로 사용할 수 있다. 어쨌든 이런 영역의 존재때문에 적절한 지역변수와 전역변수의 선언이 매우 중요하다.

! 변수선언 예제


; 아래는 실제 변수를 선언하고 사용하는 예제이다. var 키워드를 사용해 변수를 선언할 수 있다.


a = 0;
var b = 0;
test = function() {
c = 0;
var d = 0;
}

위 예제에서 우리는 변수 a, b, c, d를 선언했다. 각각의 변수들은 아래와 같은 스코프를 가지게 된다.



a = 0; // 전역변수
var b = 0; // 전역변수임. var의 사용여부를 떠나 선언 위치에 영향을 받음
test = function() {
c = 0; // 전역변수
var d = 0; // 지역변수
}


위의 c 변수는 함수내에 선언되었으나 var 키워드가 없기 때문에 전역변수로 선언된다. 함수내에서 전역변수의 선언이 가능한 점은 클로저를 활용한 캡슐화()를 가능하게 해준다. 이를 통해서 다른 스코프(scope)에서 지역변수에 접근할 수 있는 형태의 방법이 존재한다. private 변수라고도 불리는 이 방법이 우회적인 방법을 통해 만들 수가 있다. 이 부분은 다시 얘기하도록 하겠다.