Compartir a través de


Instrucciones condicionales

Actualización: noviembre 2007

Las instrucciones en el código de JScript se ejecutan secuencialmente de forma predeterminada. Podría ser útil, sin embargo, modificar la secuencia lógica y transferir el control a una parte no secuencial del código dependiendo de determinadas condiciones. Una estructura de control transfiere el control del programa a uno de dos lugares, dependiendo de si la instrucción condicional es true o false. Cualquier expresión convertible en valor Boolean se puede utilizar como instrucción condicional. En esta sección, se mencionan algunas instrucciones de condición habituales.

Igualdad e igualdad estricta

El operador de igualdad (==) en una instrucción condicional comprueba si los dos argumentos que se le han pasado tienen el mismo valor, efectuando la conversión de tipos en caso de que fuese preciso para realizar una comparación. El operador de igualdad estricta (===) compara el valor y el tipo de dos expresiones; devuelve True sólo si el valor y el tipo de datos son iguales en los dos operandos. Observe que el operador de igualdad estricta no distingue entre los diferentes tipos de datos numéricos.

En el siguiente código de JScript, se combina el operador de igualdad con una instrucción if que lo utiliza. Para obtener más información, vea Estructuras de control.

function is2000(x) : String {
   // Check if the value of x can be converted to 2000.
   if (x == 2000) {
      // Check is the value of x is strictly equal to 2000.
      if(x === 2000)
         print("The argument is number 2000.");
      else
         print("The argument can be converted to 2000.");
   } else {
      print("The argument is not 2000.");
   }
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);

Éste es el resultado del código anterior:

Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.

Desigualdad y desigualdad estricta

El operador de desigualdad (!=) devuelve el resultado opuesto al operador de igualdad. Si los operandos tienen el mismo valor, el operador de desigualdad devolverá false; de lo contrario, devolverá true. Asimismo, el operador de desigualdad estricta (!==) devuelve el resultado opuesto al operador de igualdad estricta.

Considere el siguiente ejemplo de código JScript, donde el operador de desigualdad se utiliza para controlar un bucle while. Para obtener más información, vea Estructuras de control.

var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) { 
   print(counter++);
}

Éste es el resultado del código anterior:

1
2
3
4

Comparación

Los operadores de igualdad y desigualdad resultan muy útiles para segmentos de datos con un valor específico. Sin embargo, hay algunas situaciones en las puede resultar necesario comprobar si un valor está dentro de un intervalo concreto. En estas situaciones, puede resultar conveniente utilizar los operadores relacionales: menor que (<), mayor que (>), menor o igual que (<=) y mayor o igual que (>=).

if(tempInCelsius < 0)
   print("Water is frozen.")
else if(tempInCelsius > 100)
   print("Water is vapor.");
else
   print("Water is liquid.);

Cortocircuito

Si desea probar varias condiciones juntas y sabe que alguna tiene más posibilidades de cumplirse o de no cumplirse que las demás, puede utilizar la característica denominada evaluación de cortocircuito para acelerar la velocidad de ejecución de la secuencia de comandos y evitar efectos secundarios que podrían dar lugar a errores. Cuando JScript evalúa una expresión lógica, sólo analiza el número de subexpresiones necesario para obtener un resultado.

El operador lógico AND (&&) evalúa, en primer lugar, la expresión de la izquierda que se ha pasado. Si dicha expresión se convierte en false, el resultado del operador lógico AND no puede ser true, sea cual sea el valor de la expresión de la derecha. Por consiguiente, la expresión de la derecha no se evalúa.

Por ejemplo, en la expresión ((x == 123) && (y == 42)), JScript comprueba primero si x es 123. En caso negativo, no se comprueba y y JScript devuelve el valor false.

Asimismo, el operador lógico OR (||) evalúa primero la expresión de la izquierda y, si se convierte en true, no se evalúa la expresión de la derecha.

La evaluación "cortocircuitada" resulta especialmente útil si las condiciones que se van a comprobar implican la ejecución de llamadas a funciones u otras expresiones complejas. Para que una secuencia de comandos se ejecute de forma más eficaz, incluya primero las condiciones que tienen más posibilidades de cumplirse para el operador lógico OR. Para el operador lógico AND, incluya en primer lugar las condiciones que tienen menos probabilidades de cumplirse.

Un ejemplo de las ventajas de diseñar la secuencia de comandos de esta manera es que, en el siguiente ejemplo, runsecond() no se ejecutará si el valor devuelto de runfirst() se convierte en false.

if ((runfirst() == 0) || (runsecond() == 0)) {
   // some code
}

Otro ejemplo de las ventajas de diseñar la secuencia de comandos de esta manera es que, en el siguiente ejemplo, runsecond() no se ejecutará si el valor devuelto de runfirst() se convierte a false.

if ((x == 0) && (y/x == 5)) {
   // some code
}

Otros

Una expresión convertible en valor booleano se puede utilizar como una instrucción de condición. Por ejemplo, podría utilizar una expresión como:

if (x = y + z) // This may not do what you expect - see below!

Observe que en el código anterior no se comprueba si x es igual a y + z, ya que la sintaxis utiliza únicamente un signo igual (asignación). En su lugar, el código anterior asigna el valor de y + z a la variable x y, a continuación, comprueba si el resultado de toda la expresión (el valor de x) es cero. Para comprobar si x es igual a y + z, use el código siguiente:

if (x == y + z) // This is different from the code above!

Vea también

Conceptos

Datos booleanos

Otros recursos

Estructuras condicionales de JScript

Tipos de datos de JScript

Referencia de JScript

Operadores de JScript