Javascript: Usar switch para evaluar criterios múltiples

Ayer haciendo el trabajo cotidiano me tope con una lista devuelta por la base de datos y para varios casos la acción a realizar era la misma. En primera instancia pensé en usar sentencias If/Else anidadas pero no estuve convencido del todo. Luego me decidí por usar switch y encontré que habían 2 formas para lograrlo*:

Forma 1:

Aqui para cada “case” se deja en blanco y se omite el uso de break,  de esa forma el código avanza hasta el que contiene el “break”.

var loQueEvaluamos = 1;

switch(loQueEvaluamos) {
     case 0:
     case 1:
     case 2:
             alert('aplica para los casos 1, 2 y 3');
             break;
     default:
             alert('nada');
}

Forma 2:
Esta es una forma más sofisticada de lograrlo, lo que hace es evaluar ‘true’ y luego pone las condiciones.

var loQueEvaluamos = 1;

switch(true) {

     case loQueEvaluamos > 20  && loQueEvaluamos <= 26;
             alert('evaluado');
             break;
     default:
             alert('nada');
}

* El original del artículo se encuentra en: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

Advertisements

Funciones en Javascript

Revisando un proyecto javascript Open Source (https://github.com/Leaflet/Leaflet.draw) encontré que declaran las funciones de un modo nuevo para mi.  Buscando por internet encontré que en Javascript hay 3 formas para definir una función:

  • function expression,  usa el operador “function” para crear una función.  El resultado de ese operador puede ser almacenado en cualquier variable o propiedad de un objeto.  Con frecuencia se refiere a este modo de declaración como “anonymous function” (función anónima) ya que no tiene un nombre.
var functionOne = function(){

//instrucciones

}
  • function declaration,  esto es declarar una función usando la sentencia “function”.  La función está disponible en “parse time” (algo así como en ejecución) y puede ser llamada en cualquier parte de ese ámbito.  Es posible almacenarla en una variable o en un objeto.
function fuctionTwo(){

//instrucciones

}</blockquote>
  • “Function()” constructor,  no se recomienda su uso ya que trabaja de la misma forma que eval() y tiene sus mismos problemas.

Más información

http://www.permadi.com/tutorial/jsFunc/index.html

http://kangax.github.io/nfe/

http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/