Ver índice de contenidos del libro

2.5. Elementos verdaderos y falsos

Para controlar el flujo adecuadamente, es importante entender qué tipos de valores son "verdaderos" y cuales "falsos". A veces, algunos valores pueden parecer una cosa pero al final terminan siendo otra.

Valores que devuelven verdadero (true)

'0';          // una cadena de texto cuyo valor sea 0
'any string'; // cualquier cadena
[];           // un array vacío
{};           // un objeto vacío
1;            // cualquier número distinto a cero

Valores que devuelven falso (false)

0;
'';        // una cadena vacía
NaN;       // la variable JavaScript "not-a-number" (No es un número)
null;      // un valor nulo
undefined; // tenga cuidado -- indefinido (undefined) puede ser redefinido

2.5.1. Variables condicionales utilizando el operador ternario

A veces se desea establecer el valor de una variable dependiendo de cierta condición. Para hacerlo se puede utilizar una declaración if/else, sin embargo en muchos casos es más conveniente utilizar el operador ternario. [Definición: El operador ternario evalúa una condición; si la condición es verdadera, devuelve cierto valor, caso contrario devuelve un valor diferente.]

El operador ternario

// establecer a foo igual a 1 si bar es verdadero;
// caso contrario, establecer a foo igual a 0
var foo = bar ? 1 : 0;

El operador ternario puede ser utilizado sin devolver un valor a la variable, sin embargo este uso generalmente es desaprobado.

2.5.2. Declaración switch

En lugar de utilizar una serie de declaraciones if/else/else if/else, a veces puede ser útil la utilización de la declaración switch. [Definición: La declaración Switch evalúa el valor de una variable o expresión, y ejecuta diferentes bloques de código dependiendo de ese valor.]

Una declaración switch

switch (foo) {
    case 'bar':
        alert('el valor es bar');
    break;
    case 'baz':
        alert('el valor es baz');
    break;
    default:
        alert('de forma predeterminada se ejecutará este código');
    break;
}

Las declaraciones switch son poco utilizadas en JavaScript, debido a que el mismo comportamiento es posible obtenerlo creando un objeto, el cual posee más potencial ya que es posible reutilizarlo, usarlo para realizar pruebas, etc. Por ejemplo:

var stuffToDo = {
    'bar' : function() {
        alert('el valor es bar');
    },
 
    'baz' : function() {
        alert('el valor es baz');
    },
 
    'default' : function() {
        alert('de forma predeterminada se ejecutará este código');
    }
};
 
if (stuffToDo[foo]) {
    stuffToDo[foo]();
} else {
    stuffToDo['default']();
}

Más adelante se abarcará el concepto de objetos.