XPLATFORM 101
728x90
아래 코드를 먼저 보죠.
va = "XPLATFORM";

function a()
{
trace("1:"+va);
var va = "MIPlatform";
trace("2:"+va);
}
va라는 전역코드가 암묵적으로 선언되었고 XPLATFORM이라는 값이 할당되었습니다.
그리고 a() 메소드에서 va의 값을 출력해봅니다.
그런데 특이하게도 함수내 변수로 va라는 값을 다시 정의하고 있습니다.
이런 경우에는 어떻게 값이 나올까요.
uxs (7916): 1:undefined
uxs (7916): 2:local
아마도 1:XPLATFORM 이 출력되는 것을 예상했겠지만
위와 같은 결과값이 출력됩니다.

이런 현상을 호이스팅(hoisting)이라고 합니다.
함수 내 변수를 선언하기 전에 사용해도 이미 선언된 것으로 간주한다고 합니다.
그래서 1: 다음에 나오는 결과값앞에 이미 함수 내 변수가 선언이 되었다고 보는 겁니다.
선언만 하고 변수를 정의하지 않았으니 undefined 라는 값이 나오는 것이구요.

hoisting 이라는 단어는 끌어올린다는 의미를 담고 있는데 그야말로 아래쪽에 있는 변수 선언을 끌어올리는 것입니다.

그래서 변수에 대한 선언은 가장 상단에서 먼저 하는 것을 추천하고 있습니다.
어떤 변수가 선언되어있는지도 쉽게 인지할 수 있고
호이스팅으로 인한 오류도 잡아줄 수 있습니다.

여러개의 변수를 선언하는 경우에는 아래와 같이 단일 var 패턴을 사용할 수도 있습니다.
function b()
{
var vb = 1,
vc = 2,
vd = 3;
trace(vb);
trace(vc);
trace(vd);
}
이렇게 되면 코드의 가독성도 좋아지고 코드량도 줄일 수 있고 간결한 처리가 가능합니다.

http://cafe.naver.com/xplatform101/330 

댓글을 달아 주세요