Visit Mozilla.org

Guía JavaScript 1.5:Sentencia condicional

De MDC


[editar] Sentencia condicional

Una sentencia condicional es un conjunto de comandos que se ejecutan si la condición especificada es verdadera. JavaScript soporta dos sentencias condicionales: if...else y switch.

[editar] if...else

Utilice la sentencia if para ejecutar una sentencia sí la condición lógica es verdadera. Utilice la cláusula opcional else para ejecutar una sentencia sí la condición es falsa. Una sentencia if se parece a lo que sigue:

if (condición)
   sentencia_1
[else
   sentencia_2]

La condición puede ser cualquier expresión que se evalúa como verdadera o falsa. Sí la condición se evalúa como verdadera, la sentencia_1 es ejecutada; caso contrario, la sentencia_2 es ejecutada. La sentencia_1 y la sentencia_2 pueden ser cualquier sentencia, incluyendo el uso de sentencias if anidadas.

Usted también puede componer sentencias utilizando la cláusula else if para tener múltiples condiciones probadas en secuencia, tal como sigue:

if (condición)
   sentencia_1
[else if (condición_2)
   sentencia_2]
...
[else if (condición_n_1)
   sentencia_n_1]
[else
   sentencia_n]

Para ejecutar múltiples sentencias, utilice un bloque de sentencias ({ ... }) para agruparlas. En general, es una buena práctica que siempre utilice los bloques de sentencias, especialmente en código que involucre sentencias if anidadas:

if (condición) {
   sentencia_1
} else {
   sentencia_2
}

Es recomendable no utilizar asignaciones simples en una expresión condicional , debido a que una asignación puede ser confundida con la igualdad cuando se da un vistazo al código. Por ejemplo, no utilice el siguiente código:

if (x = y) {
   /* haga las cosas correctas */
}

Si usted necesita utilizar una asignación en una expresión condicional, una práctica común es poner paréntesis adicionales alrededor de la asignación. Por ejemplo:

if ((x = y)) {
   /* haga las cosas correctas */
}

No debe confundirse los valores lógicos primitivos true y false con los valores verdadero y falso de los objetos lógicos o booleanos [Boolean object]. Cualquier valor que no está definido [undefined], es nulo [null], o es cero 0, o no es numérico [NaN], o es una cadena vacía ("") y cualquier objeto, incluyendo un objeto lógico cuyo valor es falso, se evalúa como verdadero cuando es pasado por una sentencia condicional. Por ejemplo:

var b = new Boolean(false); //asigna un objeto lógico con valor igual a falso a la variable b
if (b) // esta condición se evalúa como verdadera 

Ejemplo
En el siguiente ejemplo, la función checkData retorna verdadero si el número de caracteres en el objeto Text es tres; caso contrario, se despliega una alerta y se retorna falso.

function checkData() {
   if (document.form1.threeChar.value.length == 3) {
      return true;
   } else {
      alert("Ingrese exactamente tres caracteres. " +
         document.form1.threeChar.value + " no es válido.");
      return false;
   }
}

El ejemplo asume que la caja de texto llamada threeChar pertenece al formulario form1. y se utliza "==" para verificar el tipo de dato. (N.T.)

[editar] switch

Una sentencia switch permite a un programa evaluar una expresión e intenta cotejarla con el valor de la etiqueta de una expresión por casos. Si la coincidencia es encontrada, el programa ejecuta la sentencia asociada. Una sentencia switch se parece a lo siguiente:

switch (expresión) {
   case etiqueta_1:
      sentencias_1
      [break;]
   case etiqueta_2:
      sentencias_2
      [break;]
   ...
   default:
      sentencias_por_defecto //default
      [break;]
}

El programa primero busca por una cláusula case con una etiqueta para asociación con el valor de la expresión y luego transfiere el control a aquella cláusula, ejecutando las sentencias asociadas. Si no encuentra una coincidencia con una etiqueta, el programa mira la cláusula opcional default y si la encuentra, transfiere el control a dicha cláusula, ejecutando las sentencias asociadas. Si no es encontrada la cláusula default, el programa continua la ejecución de la sentencia encontrando el final del switch. Por convención, la cláusula default es la última cláusula, pero no es tampoco necesaria que esté. //

La sentencia opcional break asociada con cada cláusula de caso [case] asegura que el programa salte fuera del switch una vez que la sentencia coincidente es ejecutada y continua la ejecución a la siguiente sentencia después del switch. Si la la sentencia break es omitida, el programa continua la ejecución con la siguiente sentencia dentro del switch.

Ejemplo:
En el siguiente ejemplo, sí se evalúa tipofruta como "Bananas", el programa busca la coincidencia con el valor del caso "Bananas" y ejecuta la sentencia asociada. Cuando un break es encontrado, el programa termina la sentencia switch y ejecuta las siguientes sentencias después del switch. Si un break fuese omitido, la sentencia para el caso "Cerezas" debería también ser ejecutada y evaluada su coincidencia.

switch (tipofruta) {
   case "Naranjas":
      document.write("Las naranjas están a $0.59 la libra.<br>");
      break;
   case "Manzanas":
      document.write("Las manzanas están a $0.32 la libra.<br>");
      break;
   case "Bananas":
      document.write("Las bananas están a $0.48 la libra.<br>");
      break;
   case "Cerezas":
      document.write("Las cererzas están a $3.00 la libra.<br>");
      break;
   case "Mangos":
   case "Papayas":
      document.write("Los mangos y las papayas están a $2.79 la libra.<br>");
      break;
   default:
      document.write("Lo siento, no tenemos " + tipofruta + ".<br>");
}
document.write("Existe algo más que desee?<br>");