次の方法で共有


JScript における型の強制変換

JScript では、コンパイラで例外を生成することなく、異なる型の値に対して演算を実行できます。 JScript コンパイラは、演算を実行する前に、一方のデータの型をもう一方のデータ型に自動的に変更します。 他の言語には、強制変換を制御するより厳密な規則があります。

Coercion Details

強制変換が常に失敗することが検証されない限り、コンパイラはすべての強制変換を許可します。 失敗する可能性のある強制変換に対しては、コンパイル時に警告が生成されます。強制変換に失敗すると、ほとんどの場合はランタイム エラーが生成されます。 次に例を示します。

演算

結果

数値と文字列の加算

数値型が文字列型に変換されます。

ブール値と文字列の加算

ブール型が文字列型に変換されます。

数値とブール値の加算

ブール型が数値型に変換されます。

例を次に示します。

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 はユーザーの意図を正しく解釈できない可能性があります。 変換元の型が複数の値で構成されている場合などがその例です。 たとえば、次のコードでは 2 つのクラス (型) が作成されます。 一方のクラスには、整数型の変数 i が 1 つだけ含まれます。 もう一方のクラスには 3 つの変数 (s、f、および d) が含まれ、それぞれの型が異なっています。 JScript は、最後のステートメントで、最初の型の変数を 2 番目の型に変換する方法を判断できません。

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 の関数