Conversão de tipo

Conversão de tipo é o processo de alteração de um valor de um tipo para outro. Por exemplo, você pode converter a string "1234" para um número. Além disso, você pode converter dados de qualquer tipo para o String tipo. Algumas conversões de tipo nunca terão êxito. Por exemplo, um Date o objeto não pode ser convertido para um ActiveXObject objeto.

Conversões de tipo podem ser alargamento ou Estreitando: conversões de expansão nunca estouro e sempre será bem sucedida, enquanto as conversões explicitas de restrição envolvem a possível perda de informações e podem falhar.

Os dois tipos de conversão podem ser explícito (usando o identificador de tipo de dados) ou implícito (sem o identificador de tipo de dados). Válido conversões explícitas sempre será bem sucedida, mesmo se ele resulta em perda de informações. Conversões implícitas bem-sucedida somente quando o processo de perde nenhum dado; Caso contrário, eles falham e geram um erro de tempo de execução ou de compilação.

Conversões de perdas acontecem quando o tipo de dados original não tem um análogo óbvio o tipo de conversão de destino. Por exemplo, a seqüência "Fred" não pode ser convertido em um número. Nesses casos, será retornado um valor padrão da função de conversão de tipo. Para o número o tipo, o padrão é NaN; para o int o tipo, o padrão é o número zero.

Alguns tipos de conversões, como uma seqüência de caracteres para um número, from são demorados. As conversões a menos que seu programa usa, mais eficiente será.

Conversões implícitas

A maioria das conversões de tipo, como, por exemplo, atribuindo um valor a uma variável, ocorrem automaticamente. O tipo de dados da variável determina o tipo de dados de destino da conversão de expressão.

Este exemplo demonstra como dados podem ser convertidos implicitamente entre um int valor, um seqüência de caracteres valor e um double valor.

var i : int;
var d : double;
var s : String;
i = 5;
s = i;  // Widening: the int value 5 coverted to the String "5".
d = i;  // Widening: the int value 5 coverted to the double 5.
s = d;  // Widening: the double value 5 coverted to the String "5".
i = d;  // Narrowing: the double value 5 coverted to the int 5.
i = s;  // Narrowing: the String value "5" coverted to the int 5.
d = s;  // Narrowing: the String value "5" coverted to the double 5.

Quando esse código é compilado, avisos de tempo de compilação poderão informar que as conversões explicitas de restrição podem falhar ou estiverem lentas.

Conversões implícitas de restrição podem não funcionar se a conversão requer uma perda de informações. Por exemplo, as linhas a seguir não funcionará.

var i : int;
var f : float;
var s : String;
f = 3.14;
i = f;  // Run-time error. The number 3.14 cannot be represented with an int.
s = "apple";
i = s;  // Run-time error. The string "apple" cannot be converted to an int.

Conversões explícitas

Converter explicitamente uma expressão para um tipo de dados específico, use o identificador de tipo de dados seguido pela expressão para converter entre parênteses. Conversões explícitas exigem mais de digitação que conversões implícitas, mas você pode ter mais certeza do resultado. Além disso, conversões explícitas podem manipular as conversões de perdas.

Este exemplo demonstra como dados podem ser explicitamente convertidos entre um int valor, um seqüência de caracteres valor e um double valor.

var i : int;
var d : double;
var s : String;
i = 5;
s = String(i);  // Widening: the int value 5 coverted to the String "5".
d = double(i);  // Widening: the int value 5 coverted to the double 5.
s = String(d);  // Widening: the double value 5 coverted to the String "5".
i = int(d);     // Narrowing: the double value 5 coverted to the int 5.
i = int(s);     // Narrowing: the String value "5" coverted to the int 5.
d = double(s);  // Narrowing: the String value "5" coverted to the double 5.

Conversões explicitas de restrição normalmente funcionará, mesmo se a conversão requer uma perda de informações. Conversão explícita não pode ser usado para converter entre tipos de dados incompatíveis. Por exemplo, não é possível converter Date dados para ou de RegExp de dados. Além disso, conversões não são possíveis para alguns valores, porque não há nenhum valor sensato ao qual deseja converter. Por exemplo, é gerado um erro ao tentar explicitamente converter o valor double NaN para um decimal. Isso ocorre porque não há nenhum natural decimal valor que pode ser identificada com NaN.

Neste exemplo, um número com a parte decimal é convertido em um número inteiro e uma seqüência de caracteres é convertida em um número inteiro.

var i : int;
var d : double;
var s : String;
d = 3.14;
i = int(d);
print(i);
s = "apple";
i = int(s);
print(i);

A saída é

3
0

O comportamento da conversão explícita depende do tipo de dados original e o tipo de dados de destino.

Consulte também

Referência

Propriedade indefinida

Conceitos

Anotação de tipo

Outros recursos

Tipos de dados de JScript