tipos funciones ejemplos comandos javascript

funciones - javascript ejemplos pdf



DeclaraciĆ³n de cambio condicional de Javascript (4)

¿Hay alguna manera de escribir una instrucción de cambio condicional en javascript?

Supongo que no, ya que lo siguiente siempre va a ser el predeterminado:

var raw_value = 11.0; switch(raw_value) { case (raw_value > 10.0): height = 48; width = 36; break; case (raw_value > 5.0): height = 40; width = 30; break; default: height = 16; width = 12; break; }

Si no, ¿qué debería usar en su lugar, una declaración larga if / else?

Gracias :)


En una declaración de switch , el valor evaluado de la expresión de switch se compara con los valores evaluados de los casos. Así que aquí el valor de raw_value (number) se compara con raw_value > 10.0 (expresión de comparación) y raw_value > 5.0 (expresión de comparación).

Entonces, a menos que una de las expresiones de su caso arroje un número igual a 11.0 o use la expresión de switch true , siempre obtendrá el caso predeterminado.

Simplemente use un if / else simple en if lugar:

var raw_value = 11.0; if (raw_value > 10.0) { height = 48; width = 36; } else if (raw_value > 5.0) { height = 40; width = 30; } else { height = 16; width = 12; }


Me gusta esto:

var raw_value = 11.0; switch(true) { case (raw_value > 10.0): height = 48; width = 36; break; case (raw_value > 5.0): height = 40; width = 30; break; default: height = 16; width = 12; }

Las expresiones en los enunciados de case se evaluarán como true o false , y si eso coincide con la condición del switch ... voilà. El default actúa como un else .

Bonificación: puede invertir toda la lógica simplemente reemplazando true con false . Con las sentencias if ... else if , tendrías que editar cada cláusula if de forma individual.


No intentes esto en casa, o tómalo demasiado en serio, esto es solo para diversión azucarada ...

function conditionalSwitch(value, cond, callback /* cond, callback, cond, callback, ... */ ) { for (var i = 1; i < arguments.length; i += 2) { if (arguments[i](value)) { arguments[i + 1](value); return; } } } function test(val) { let width, height; conditionalSwitch(val, (val) => val > 10, () => [height, width] = [48,36], (val) => val > 5, () => [height, width] = [40, 30], // Default () => true, () => [height, width] = [16, 12] ) console.log(width, height); } test(4.9); // 12 16 test(5.1); // 30 40 test(10.1); // 36 48


No, la instrucción switch no funciona así. Sin embargo, esta afirmación no siempre es más simple. Por ejemplo, la versión del switch toma 15 líneas:

var raw_value = 11.0; switch(raw_value) { case (raw_value > 10.0): height = 48; width = 36; break; case (raw_value > 5.0): height = 40; width = 30; break; default: height = 16; width = 12; break; }

y la versión "larga" if/else solo 11:

var raw_value = 11.0; if (raw_value > 10.0) { height = 48; width = 36; } else if (raw_value > 5.0) { height = 40; width = 30; } else { height = 16; width = 12; }

Entonces, en tu caso, es mejor usar el segundo que el primero ...