XPLATFORM 101
parseInt() 는 단어 그대로 
값을 정수로 잘라내는 메소드입니다.
그냥 변환하는 것이 아니라 인자값에서 정수로 표현가능한 부분을 잘라내고
이를 정수값으로 표현합니다.

때문에 들어오는 값이 정수값임을 보장할 수 있다면
parseInt() 대신에 Number()를 사용하는 것이 훨씬 빠르다고 합니다.
function b()
{
trace(parseInt("08",10));
trace(Number("08"));
trace(parseInt("08  abc",10));
}
자바스크립트에서 parseInt() 메소드를 사용할때에는 2번째 인자값에 지수값이 들어갑니다.
당연히 10진수라고 생각하겠지만 0으로 시작하는 문자열이 들어오는경우에는
8진수로 처리된다고 합니다.

그래서
trace(parseInt("09"));
trace(parseInt("09",10));
위의 코드를 실행해보면 결과값이 다르게 나옵니다.

* 자바스크립트에서는 첫번째 코드값은 0으로 처리되는데 엑스플랫폼에서는 9로 처리합니다.
내부적으로 해당 코드를 ES5 기준으로 맞춘것이 아닌가 싶습니다.

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

댓글을 달아 주세요

XPLATFORM 101
아래 코드를 먼저 보죠.
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 

댓글을 달아 주세요

XPLATFORM 101
변수를 선언할때 변수를 사용할 수 있는 범위가 정의됩니다.
예를 들어 특정 function 내에서 변수를 정의했다면 다른 function에서는 사용할 수 없습니다.
function a()
{
var result = 10 + 20;
}

function b()
{
trace(result);
}
위와 같은 코드에서 a()를 실행하고 b()를 실행한다면
~는 선언되지 않은 식별자입니다. 라는 메시지가 출력됩니다.
b()를 실행하는 시점에서 result 라는 변수가 없다는 것이지요.

하지만 살짝 코드를 바꾸어지면 상황이 달라집니다.
function a()
{
result = 10 + 20;
}

function b()
{
trace(result);
}
이렇게 되면 result 는 암묵적으로 전역변수로 선언이 되고
b() 메소드에서 사용할 수 있습니다.

교과서(?)를 보면 이런 암묵적 전역은 가능하면 피하라고 조언합니다.
아래와 같은 경우에도 암묵적 전역이 적용됩니다.
function a()
{
var a = b = 0;
}
언뜻 보면 a, b 모두 전역변수가 아닌것 같지만
b 는 암묵적 전역으로 인정되어 전역변수처럼 동작하게 됩니다.

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

댓글을 달아 주세요