JScript에서의 강제 변환

JScript에서는 컴파일러에서 예외를 발생시키지 않고 서로 다른 형식의 값에 대한 연산을 수행할 수 있습니다. JScript 컴파일러에서는 데이터 형식 중 하나를 다른 하나의 데이터 형식으로 자동으로 강제 변환한 다음 연산을 수행합니다. 다른 언어에서는 강제 변환 규칙이 훨씬 엄격합니다.

강제 변환 세부 사항

강제 변환이 항상 실패할 것으로 확인이 되는 경우 이외에는 모든 강제 변환이 허용됩니다. 강제 변환이 실패할 가능성이 있는 경우에는 컴파일 타임에 경고 메세지를 표시하며, 실패할 경우에는 런타임 오류가 발생합니다. 예를 들면 다음과 같습니다.

작업

결과

숫자와 문자열 더하기

숫자가 문자열로 강제 변환됩니다.

부울과 문자열 더하기

부울이 문자열로 강제 변환됩니다.

숫자와 부울 더하기

부울이 숫자로 강제 변환됩니다.

다음 예제를 살펴보십시오.

var x = 2000;      // A number.
var y = "Hello";   // A string.
x = x + y;         // the number is coerced into a string.
print(x);          // Outputs 2000Hello.

명시적으로 문자열을 정수로 변환하려면 parseInt 메서드를 사용합니다. 자세한 내용은 parseInt 메서드를 참조하십시오. 명시적으로 문자열을 숫자로 변환하려면 parseFloat 메서드를 사용합니다. 자세한 내용은 parseFloat 메서드를 참조하십시오. 문자열은 비교할 때는 숫자로 자동 변환되지만 추가(연결)할 때에는 문자열로 계속 남아 있습니다.

JScript는 강력하게 형식화된 언어이므로 또 다른 강제 변환 메커니즘을 사용할 수 있습니다. 이 새로운 강제 변환 메커니즘에서는 변환할 식을 인수로 받아들이는 함수인 것처럼 대상 형식 이름을 사용합니다. 이 메커니즘은 모든 JScript 기본 형식, JScript 참조 형식 및 .NET Framework 형식에 적용됩니다.

예를 들어, 다음 코드는 정수 값을 부울 값으로 변환합니다.

var i : int = 23;
var b : Boolean;
b = i;
b = Boolean(i);

i 값이 0이 아니므로 b 는 true입니다.

새로운 강제 변환 메커니즘은 사용자 정의 형식에도 사용할 수 있습니다. 그러나, 유사성이 없는 형식을 변환할 때 JScript에서 사용자의 의도를 잘못 해석할 수 있기 때문에 강제 변환을 사용할 수 없는 사용자 정의 형식도 있습니다. 특히, 변환하는 형식이 여러 개의 값으로 구성된 경우가 이에 해당합니다. 예를 들어, 다음 코드는 두 개의 클래스(형식)를 만듭니다. 하나는 단일 변수인 정수 i 를 포함하며, 다른 하나는 각각 다른 형식인 세 개의 변수(s, f 및 d)를 포함합니다. 마지막 문에서 JScript는 첫 번째 형식의 변수를 두 번째 형식의 변수로 변환할 방법을 결정할 수 없습니다.

class myClass {
   var i : int = 42;
}
class yourClass {
   var s : String = "Hello";
   var f : float = 3.142;
   var d : Date = new Date();
}
// Define a variable of each user-defined type.
var mine : myClass = new myClass();
var yours : yourClass;

// This fails because there is no obvious way to convert
// from myClass to yourClass
yours = yourClass(mine);

참고 항목

개념

형식 변환

비트 연산자에 의한 강제 변환

기타 리소스

JScript 함수