본문 바로가기

javascript

[javascript] 전역변수

앞에서는 변수와 관련돼서 hoisting에 대해 알아봤습니다.


이번에는 전역변수에 대해 알아보겠습니다.


전역변수, 지역변수 프로그래밍을 하는 사람이라면 기본일 것이고 설명할 것들이 있나 생각할수도 있습니다.


하지만 javascript의 특징과 주의할 점을 설명하겠습니다.


함수내에서 var를 빠뜨리고 선언하면 전역변수로 선언된다.


function sun(x,y){

result=x+y;//전역변수

return result;

}


위와같이 var를 빠뜨리고 변수를 선언하면 전역변수가 됩니다.


작동에는 문제가 없지만 함수를 호출하고 나서 전역 네임스페이스에 result변수가 남아 문제를 발생 시킬수 있습니다.


다음으로 var선언을 연속적으로 선언할 경우 생기는 문제점이 있습니다.


function a(){

var a=b=0;

}


위의 경우 a는 지역변수 이지만 b는 전역변수가 됩니다.


이런이유는 값의 대입이 오른쪽에서 왼쪽으로 진행되기때문에 b=0이라는 표현이 먼저 실행됩니다. 이떄 b는 선언되지 않은 생태이므로


b는 전역변수로 선언되고 이 b의 값이 다시 a의 지역변수에 할당됩니다.


위 코드는 아래와 같습니다.


function a(){

var a=(b=0);

}


아래와 같이 변수를 미리선언해 두고 선속적으로 할당하면 문제가 되지 않습니다.


function a(){

var a,b;

a=b=0;

}




자바스크립트 전역변수는 웹페이지 모든 코드사이에 공유됩니다.


이런 특징때문에 전역변수의 빈번한 사용은 문제를 일으킬수 있다.


어플리케이션내에 다른 영역에서 다른 목적으로 동일한 전역변수를 정의할 경우 덮어쓰게 된다.


그리고 플러그인이나 외부코드를 가져와 사용하는 경우 문제가 발생할수도 있습니다.


그러므로 전역변수를 최소화 하여 사용하여 사용합시다.


'javascript' 카테고리의 다른 글

[javascript] JavaScript Puzzlers!  (0) 2014.02.08
[javascript] 중괄호 위치  (0) 2013.11.19
[javascript] hoisting  (0) 2013.11.18
[javascript] ==과 ===  (0) 2013.11.07
[javascript] javascript patterns  (0) 2013.10.28