Igualdade e atribuições de JScript

No JScript, o operador de atribuição atribui um valor a uma variável. O operador de igualdade compara dois valores.

Atribuições

Como muitas linguagens de programação, o JScript usa o sinal de igual (=) para atribuir valores a variáveis: é o operador de atribuição. O operando esquerdo da = operador deve ser um Lvalue, que significa que deve ser uma variável, um elemento de matriz ou uma propriedade do objeto.

O operando à direita do = operador deve ser um Rvalue. Um Rvalue pode ser um valor arbitrário de qualquer tipo, incluindo um valor que é o resultado de uma expressão. A seguir é um exemplo de uma instrução de atribuição de JScript.

anInteger = 3;

JScript interpreta essa instrução como significado:

"Atribuir o valor 3 para a variável anInteger,"

ou

"anInteger usa o valor 3."

Uma atribuição sempre será bem sucedida se a anotação de tipo não está vinculado a variável na declaração para um tipo de dados específico. Caso contrário, o compilador tentará converter o Lvalue o tipo de dados de Rvalue. Se a conversão nunca pode ser executada com êxito, o compilador gera um erro. Se a conversão será bem-sucedida para alguns valores mas falhar para outras pessoas, o compilador gera um aviso de que a conversão pode falhar quando o código é executado.

Neste exemplo, o valor inteiro é armazenado na variável i é convertido em um valor duplo quando atribuído à variável x.

var i : int = 29;
var x : double = i;

Para obter mais informações, consulte Conversão de tipo.

Igualdade

Ao contrário de algumas outras linguagens de programação, o JScript não usa o sinal de igual como um operador de comparação, mas somente como o operador de atribuição. Para a comparação entre dois valores, você pode usar o operador de igualdade (= =) ou o operador de igualdade estrita (=).

O operador de igualdade compara primitivas seqüências de caracteres, números e booleanos por valor. Se duas variáveis têm o mesmo valor, após a conversão de tipo (se necessário), o operador de igualdade retorna true. Objetos (incluindo Array, Function, String, número, Boolean, erro, Date e RegExp objetos) comparar por referência. Mesmo se as duas variáveis de objeto tem o mesmo valor, a comparação retorna true somente se eles se referem ao mesmo objeto.

O operador de igualdade estrita compara o valor e o tipo de duas expressões; True retornado somente se as duas expressões comparam como iguais com o operador de igualdade e o tipo de dados é a mesma para ambos os operandos.

ObservaçãoObservação

O operador de igualdade estrita não faz distinção entre os tipos diferentes de dados numéricos. Certifique-se de que compreender a diferença entre o operador de atribuição, o operador de igualdade e o operador de igualdade estrita.

Comparações em seus scripts sempre tem um resultado booleano. Considere a seguinte linha de código de JScript.

y = (x == 2000);

Aqui, o valor da variável x é testado para ver se ela é igual ao número 2000. Se for, o resultado da comparação é um valor booleano true, que é atribuído à variável y**.** Se x não é igual a 2000, e em seguida, o resultado da comparação é um valor booleano false, atribuído a y.

O operador de igualdade será tipo-converter para verificar se os valores são os mesmos. Na seguinte linha de código de JScript, a seqüência literal "42" será convertido para um número antes comparando-a com o número de 42. O resultado é true.

42 == "42";

Objetos são comparados usando regras diferentes. O comportamento do operador de igualdade depende do tipo de objetos. Se os objetos são instâncias de uma classe que é definido com um operador de igualdade, o valor retornado depende da implementação do operador de igualdade. Classes que fornecem um operador de igualdade não podem ser definidos em JScript, embora outros.Idiomas do NET Framework permitem tais definições de classe.

Objetos sem um operador de igualdade definido, como, por exemplo, um objeto com base na JScript Object objeto ou uma instância de uma classe JScript, comparados como iguais, somente se ambos os objetos se referem ao mesmo objeto. Isso significa que dois objetos distintos que contêm os mesmos dados comparam como diferentes. O exemplo a seguir ilustra esse comportamento.

// A primitive string.
var string1 = "Hello";
// Two distinct String objects with the same value.
var StringObject1 = new String(string1);
var StringObject2 = new String(string1);

// An object converts to a primitive when
// comparing an object and a primitive.
print(string1 == StringObject1);   // Prints true.

// Two distinct objects compare as different.
print(StringObject1 == StringObject2);   // Prints false.

// Use the toString() or valueOf() methods to compare object values.
print(StringObject1.valueOf() == StringObject2);   // Prints true.

Operadores de igualdade são especialmente úteis para as instruções de condição de estruturas de controle. Aqui, você deve combinar um operador de igualdade com uma instrução que o utiliza. Considere o seguinte exemplo de código de JScript.

if (x == 2000)
   z = z + 1;
else
   x = x + 1;

O if...else instrução em JScript executa uma ação (nesse caso, z = z + 1) se o valor de x 2000 e uma ação alternativa (x = x + 1) se o valor de x não é 2000. Para obter mais informações, consulte Estruturas de condicional de JScript.

O operador de igualdade estrita (=) executa a conversão de tipo somente em tipos de dados numéricos. Isso significa que o inteiro 42 é considerado ser idêntico a 42 duplas, mas nenhuma são idênticas a seqüência de caracteres "42". Esse comportamento é demonstrado por este código de JScript.

var a : int = 42;
var b : double = 42.00;
var c : String = "42";
print(a===b); // Displays "true".
print(a===c); // Displays "false".
print(b===c); // Displays "false".

Consulte também

Conceitos

Dados booleanos

Conversão de tipo

Outros recursos

Tour da linguagem de JScript

Estruturas de condicional de JScript