Compartir a través de


Asignaciones e igualdad en JScript

En JScript, el operador de asignación se utiliza para asignar un valor a una variable. El operador de igualdad compara dos valores.

Asignaciones

Al igual que muchos lenguajes de programación, JScript utiliza el signo igual (=) para asignar valores a variables: es el operador de asignación. El operando situado a la izquierda del operador = debe ser un valor Lvalue, es decir, una variable, un elemento de la matriz o una propiedad de objeto.

El operando situado a la derecha del operador = debe ser un valor Rvalue. Puede utilizarse cualquier tipo de valor arbitrario como valor Rvalue, incluido el valor resultante de una expresión. A continuación se incluye un ejemplo de instrucción de asignación de JScript:

anInteger = 3;

JScript interpreta esta instrucción de la forma siguiente:

"Asignar el valor 3 a la variable anInteger"

o bien

"anInteger recibe el valor 3".

Una asignación será correcta siempre que la anotación de tipo no haya enlazado la variable a un tipo de datos determinado en la instrucción. En caso contrario, el compilador intentará convertir Lvalue al tipo de datos de rvalue. Si la conversión nunca se puede realizar correctamente, el compilador genera un error. Si la conversión se realiza correctamente para algunos valores, pero falla con otros, el compilador genera una advertencia informando de que se puede producir un error cuando se ejecuta el código.

En este ejemplo, el valor entero almacenado en la variable i se convierte a un valor double cuando se asigna a la variable x.

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

Para obtener más información, vea Conversión de tipos.

Igualdad

A diferencia de otros lenguajes de programación, JScript no utiliza el signo igual como operador de comparación, sino sólo como operador de asignación. Para comparar dos valores, puede utilizar el operador de igualdad (==) o el operador de igualdad estricta (===).

El operador de igualdad compara las cadenas primitivas, los números y los valores booleanos por valor. Si dos variables tienen el mismo valor, después de la conversión de tipos (si es necesaria), el operador de igualdad devuelve true. Los objetos (incluidos los objetos Array, Function, String, Number, Boolean, Error, Date y RegExp) se comparan por referencia. Aunque dos variables de objeto tengan el mismo valor, la comparación devuelve true sólo si hacen referencia al mismo objeto.

El operador de igualdad estricta compara el valor y el tipo de dos expresiones; devuelve true sólo si las dos expresiones se comparan como iguales con el operador de igualdad, y el tipo de datos es el mismo para los dos operandos.

Nota

El operador de igualdad estricta no distingue entre los diferentes tipos de datos numéricos. Es importante comprender la diferencia que hay entre los operadores de asignación, de igualdad y de igualdad estricta.

Las comparaciones realizadas en los scripts siempre tienen un resultado booleano. Observe la siguiente línea de código de JScript:

y = (x == 2000);

Aquí, el valor de la variable x se comprueba para ver si es igual al número 2000. Si lo es, el resultado de la comparación es el valor booleano true, que se asigna a la variable y**.** Si x no es igual a 2000, el resultado de la comparación es el valor booleano false, asignado a y.

El operador de igualdad convertirá el tipo para comprobar si los valores son iguales. En la siguiente línea de código de JScript, la cadena literal "42" se convertirá en un número antes de compararla con el número 42. El resultado es true.

42 == "42";

Los objetos se comparan mediante otras reglas. El comportamiento del operador de igualdad depende del tipo de los objetos. Si los objetos son instancias de una clase definida con un operador de igualdad, el valor devuelto está en función de la implementación del operador de igualdad. Las clases que proporciona un operador de igualdad no se pueden definir en JScript, aunque otros lenguajes de .NET Framework permiten esas definiciones de clase.

Los objetos sin un operador de igualdad definido, como un objeto basado en el objeto Object de JScript o una instancia de una clase de JScript, se consideran iguales sólo si los dos objetos hacen referencia al mismo objeto. Es decir, el resultado de una comparación entre dos objetos distintos siempre será diferente, aunque contengan los mismos datos. En el siguiente ejemplo se muestra este comportamiento:

// 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.

Los operadores de igualdad son especialmente útiles en las instrucciones de condición de estructuras de control. En este caso se combina el operador de igualdad con la instrucción que lo utiliza. Considere el ejemplo siguiente de código de JScript:

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

La instrucción if...else de JScript lleva a cabo una acción (en este caso, z = z + 1) si el valor de x es 2000 y una acción alternativa (x = x + 1) si el valor de x no es igual a 2000. Para obtener más información, vea Estructuras condicionales de JScript.

El operador de igualdad estricta (===) realiza la conversión de tipos de datos numéricos únicamente. Esto significa que el número entero 42 se considera idéntico al doble 42, pero ninguno es idéntico a la cadena "42". Este comportamiento se explica en el siguiente 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".

Vea también

Conceptos

Datos booleanos

Conversión de tipos

Otros recursos

Paseo por el lenguaje JScript

Estructuras condicionales de JScript