Opción 1 - cambiar usando retorno:
function myFunction(opt)
{
switch (opt)
{
case 1: return "One";
case 2: return "Two";
case 3: return "Three";
default: return "";
}
}
Opción 2 - cambiar usando break:
function myFunction(opt)
{
var retVal = "";
switch (opt)
{
case 1:
retVal = "One";
break;
case 2:
retVal = "Two";
break;
case 3:
retVal = "Three";
break;
}
return retVal;
}
Sé que ambos funcionan, pero ¿es una de las mejores prácticas? Me gusta la opción 1: cambiar usando return mejor, ya que es más limpio y simple.
var SFAIC = {};
SFAIC.common =
{
masterPages:
{
cs: "CS_",
cp: "CP_"
},
contentPages:
{
cs: "CSContent_",
cp: "CPContent_"
}
};
function getElementPrefix(page)
{
return (page in SFAIC.common.masterPages)
? SFAIC.common.masterPages[page]
: (page in SFAIC.common.contentPages)
? SFAIC.common.contentPages[page]
: undefined;
}
Para llamar a la función, lo haría de las siguientes maneras:
getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);
El problema aquí es que siempre regresa indefinido. Supongo que es porque está pasando el valor real del objeto literal y no la propiedad. ¿Qué haría para arreglar esto usando la técnica descrita en los comentarios de @ ic3b3rg ?
javascript
return
switch-statement
break
Code Maverick
fuente
fuente
Respuestas:
Un descanso le permitirá continuar procesando en la función. Simplemente regresar del interruptor está bien si eso es todo lo que quieres hacer en la función.
fuente
return {1:"One",2:"Two,3:"Three"}[opt];
. Si necesita el valor predeterminado, entonces seríavar o={1:"One",2:"Two,3:"Three"}; return opt in o?o[opt]:"";
return (opt in o) ? o[opt] : "";
, pero siempre devuelve el valor predeterminado en mi caso específico."
en"Two"
) pero funciona para mí ... he aquí una prueba sencilla:var o={1:"One",2:"Two",3:"Three"},opt=2; alert(opt in o?o[opt]:"");
Depende, si su función solo consiste en la declaración de cambio, entonces creo que está bien. Sin embargo, si desea realizar cualquier otra operación dentro de esa función, probablemente no sea una buena idea. También es posible que tenga que considerar sus requisitos en este momento en comparación con el futuro. Si desea cambiar su función de la opción uno a la opción dos, se necesitará una mayor refactorización.
Sin embargo, dado que dentro de las declaraciones if / else, es una buena práctica hacer lo siguiente:
En base a esto, se podría argumentar que la opción uno es una mejor práctica.
En resumen, no hay una respuesta clara, por lo tanto, siempre y cuando su código se adhiera a un estándar coherente, legible y mantenible, es decir, no mezcle y combine las opciones uno y dos en su aplicación, esa es la mejor práctica que debe ser siguiendo.
fuente
return foo == "bar";
return foo == "bar" ? 0 : 100;
o inclusoreturn [100,0][foo == "bar"];
.return [100,0][+(foo == "bar")];
?return [100,0][foo == "bar" & 1];