Compartir a través de


Conversión en JScript

Actualización: noviembre 2007

JScript puede realizar operaciones en valores de tipos diferentes sin que el compilador inicie una excepción. El compilador de JScript cambia (convierte) automáticamente uno de los tipos de datos al otro y realiza después la operación. Otros lenguajes tienen reglas mucho más estrictas que rigen la conversión.

Detalles de la conversión

El compilador permite todo tipo de conversiones a menos que compruebe que la conversión siempre producirá un error. Las conversiones que pueden producir errores generan una advertencia en tiempo de compilación, y muchas de ellas producen un error en tiempo de ejecución. Por ejemplo:

Operación

Resultado

Sumar un número y una cadena

El número se convierte en cadena

Sumar un tipo booleano y una cadena

El tipo booleano se convierte en cadena

Sumar un número y un tipo booleano

El tipo booleano se convierte en número

Considere el ejemplo siguiente.

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

Para convertir de forma explícita una cadena en un entero, utilice el método parseInt. Para obtener más información, vea el método parseInt. Para convertir de forma explícita una cadena en un número, utilice el método parseFloat. Para obtener más información, vea el método parseFloat. Tenga en cuenta que las cadenas se convierten automáticamente en números equivalentes al realizar una comparación, pero no se modifican durante una suma (o concatenación).

Puesto que JScript es también un lenguaje con establecimiento inflexible de tipos, existe otro mecanismo de conversión. El nuevo mecanismo utiliza, para realizar la conversión, el nombre de tipo de destino como si se tratara de una función, como lo haría con un argumento. Este mecanismo funciona para todos los tipos primitivos de JScript, los tipos de referencia de JScript y los tipos de .NET Framework.

Por ejemplo, en el siguiente código, se convierte un valor entero en un tipo Boolean:

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

Puesto que el valor de i es un valor distinto de cero, b será true.

El nuevo mecanismo de conversión funciona también con muchos tipos definidos por el usuario. Sin embargo, algunas conversiones de tipos definidos por el usuario podrían no funcionar, ya que JScript puede interpretar incorrectamente la intención del usuario cuando convierte tipos que no son similares. Esto ocurre especialmente cuando el tipo que se va a convertir está formado por varios valores. Por ejemplo, en el siguiente código, se crean dos clases (tipos): una de ellas contiene una sola variable i , que es un entero, mientras que la otra contiene tres variables (s, f y d), cada una de un tipo diferente. En la instrucción final, JScript no puede determinar cómo convertir una variable del primer tipo en el segundo tipo:

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);

Vea también

Conceptos

Conversión de tipos

Conversión realizada por operadores bit a bit

Otros recursos

Funciones de JScript