Umwandlung in JScript
JScript kann Operationen mit Werten unterschiedlichen Datentyps ausführen, ohne dass der Compiler eine Ausnahme auslöst. Stattdessen ändert (konvertiert) der JScript-Compiler automatisch einen Datentyp in den anderen um und führt dann erst die Operation durch. Bei anderen Sprachen gelten weitaus strengere Regeln für die Umwandlung.
Details zur Umwandlung
Der Compiler lässt alle Umwandlungen zu, es sei denn, er kann belegen, dass die Umwandlung immer fehlschlagen wird. Bei Umwandlungen, die fehlschlagen könnten, wird zur Kompilierzeit eine Warnmeldung ausgegeben, und bei vielen Umwandlungen wird im Falle des Fehlschlagens ein Laufzeitfehler ausgelöst. Beispiel:
Operation |
Ergebnis |
---|---|
Addieren einer Zahl mit einer Zeichenfolge |
Die Zahl wird in eine Zeichenfolge konvertiert. |
Addieren eines booleschen Werts mit einer Zeichenfolge |
Der boolesche Wert wird in eine Zeichenfolge konvertiert. |
Addieren einer Zahl mit einem booleschen Wert |
Der boolesche Wert wird in eine Zahl konvertiert. |
Betrachten Sie das folgende Beispiel.
var x = 2000; // A number.
var y = "Hello"; // A string.
x = x + y; // the number is coerced into a string.
print(x); // Outputs 2000Hello.
Mit der parseInt-Methode können Sie eine Zeichenfolge explizit in eine ganze Zahl konvertieren. Weitere Informationen hierzu finden Sie unter parseInt-Methode. Mit der parseFloat-Methode wandeln Sie eine Zeichenfolge explizit in eine Zahl um. Weitere Informationen hierzu finden Sie unter parseFloat-Methode. Beachten Sie, dass Zeichenfolgen bei Vergleichen automatisch in äquivalente Zahlen konvertiert werden, bei Additionen (Verkettung) aber Zeichenfolgen bleiben.
Da JScript auch eine streng typisierte Programmiersprache ist, ist ein weiterer Umwandlungsmechanismus verfügbar. Bei dieser neuen Technik wird der Name des Zieldatentyps wie eine Funktion behandelt, die den zu konvertierenden Ausdruck als Argument verwendet. Dies funktioniert für alle primitiven JScript-Typen, JScript-Verweistypen und .NET Framework-Typen.
Im folgenden Code wird z. B. ein ganzzahliger Wert in einen Wert vom Typ Boolean konvertiert:
var i : int = 23;
var b : Boolean;
b = i;
b = Boolean(i);
Da der Wert von i ungleich 0 ist, hat b den Wert true.
Der neue Umwandlungsmechanismus kann auch bei einer Vielzahl von benutzerdefinierten Typen angewendet werden. Allerdings funktionieren bestimmte Umwandlungen aus oder in benutzerdefinierte(n) Typen u. U. nicht, da JScript möglicherweise die Absicht des Benutzers beim Konvertieren von unterschiedlichen Typen fehlinterpretiert. Dies gilt besonders, wenn sich der zu konvertierende Typ aus mehreren Werten zusammensetzt. Im folgenden Codebeispiel werden zwei Klassen (Typen) erstellt. Eine der Klassen enthält eine einzige Variable, die ganze Zahl i . Die andere Klasse enthält drei Variablen (s, f und d), und jede hat einen anderen Datentyp. JScript kann aus der letzten Anweisung nicht entnehmen, wie eine Variable des ersten Typs in eine Variable des zweiten Typs konvertiert werden soll.
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);
Siehe auch
Konzepte
Umwandlung durch bitweise Operatoren