Compartilhar via


Coerção de JScript

JScript pode executar operações em valores de tipos diferentes sem que o compilador ao gerar uma exceção. Em vez disso, o compilador JScript altera automaticamente (converte) tipos de um dos dados para que a do outro antes de executar a operação. Outros idiomas têm muito mais estritas regras que regem a coerção.

Detalhes de coerção

O compilador permite a todos os coercions, a menos que ele pode provar que a coerção sempre falhará. Qualquer coerção que pode falha gera um aviso em tempo de compilação e muitos produzem um erro em tempo de execução se a coerção falhar. Por exemplo:

Operation

Resultado

Adicionar um número e uma seqüência de caracteres.

O número é forçado em uma seqüência de caracteres.

Adicionar um valor booleano e uma seqüência de caracteres.

O Boolean é forçado em uma seqüência de caracteres.

Adicionar um número e um valor booleano

O Boolean é forçado em um número.

Considere o exemplo a seguir:

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 explicitamente converter uma seqüência de caracteres para um inteiro, você pode usar o parseInt método. Para obter mais informações, consulte o parseInt o método. Para explicitamente converter uma seqüência de caracteres em um número, você pode usar o parseFloat método. Para obter mais informações, consulte o parseFloat o método. Observe que as seqüências são automaticamente convertidas em números equivalentes para fins de comparação, mas são deixadas como seqüências de adição (concatenação).

Como JScript também é uma linguagem com rigidez de tipos, outro mecanismo de coerção está disponível. O novo mecanismo usa o nome do tipo de destino, como se fosse uma função que aceite a expressão a ser convertida como um argumento. Isso funciona para todos os JScript tipos primitivos, tipos de referência de JScript, e.Tipos de NET Framework.

Por exemplo, o código a seguir converte um valor inteiro em um booleano:

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

Porque o valor de i é um valor diferente de zero, b é true.

O novo mecanismo de coerção também funciona com muitos tipos definidos pelo usuário. No entanto, alguns coercions ou para tipos definidos pelo usuário podem não funcionar porque a JScript pode interpretar incorretamente os intenção do usuário durante a conversão de tipos diferentes. Isso é particularmente verdadeiro quando o tipo que é convertido de é composto de vários valores. Por exemplo, o código a seguir cria duas classes (tipos). Um contém uma única variável i ou seja um inteiro. A outra contém três variáveis (s, f, e d), cada um de um tipo diferente. Na declaração final, é impossível para o JScript determinar como converter uma variável do tipo primeiro para o 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);

Consulte também

Conceitos

Conversão de tipo

Coerção de operadores bit a bit

Outros recursos

Funções de JScript