Coerção no JScript
JScript pode executar operações em valores de diferentes tipos sem o compilador disparar uma exceção.Em vez disso, o compilador JScript altera automaticamente (converte) um dos dados de tipos que a do Outros antes de executar a operação.Outros idiomas têm muito mais estrita regras que regem a coerção.
Detalhes de coerção
O compilador permite coercions todas as, a menos que ela pode provar que a coerção sempre falhará.Qualquer coerção que pode ser falhas gera um aviso no momento da compilar e muitos produzem um erro em time de execução se falhar a coerção.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 booliano e uma seqüência de caracteres |
O valor booliano é forçado em uma seqüência de caracteres. |
Adicionar um número e um valor booliano |
O valor booliano é 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 converter uma seqüência de caracteres explicitamente em um número inteiro, você pode usar o parseInt Método. Para obter mais informações, consulte o Método parseInt.Para converter uma seqüência de caracteres explicitamente em um número, você pode usar o parseFloat método. Para obter mais informações, consulte o Método parseFloat.Observe que sistema autônomo seqüências de caracteres são automaticamente convertidas em números equivalentes para fins de comparação, mas deixadas sistema autônomo cadeias de caracteres 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 de tipo de destino sistema autônomo se fosse uma função que aceite a expressão a ser convertida sistema autônomo um argumento.Isso funciona para todos os JScript tipos primitivos, tipos de referência do JScript e tipos do .NET estrutura.
Por exemplo, o código a seguir converte um valor inteiro para um valor booliano:
var i : int = 23;
var b : Boolean;
b = i;
b = Boolean(i);
Porque o valor de i é um valor Outros que 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 JScript pode misinterpret intenção do usuário durante a conversão de tipos diferentes.Isso é especialmente verdadeiro quando o tipo é 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 que é um número inteiro. A Outros contém três variáveis (s, f, e d), cada um tipo diferente. Na demonstrativo final, é impossível para 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
Coerção por operadores bit a bit