Option 1 - commutation à l'aide du retour:
function myFunction(opt)
{
switch (opt)
{
case 1: return "One";
case 2: return "Two";
case 3: return "Three";
default: return "";
}
}
Option 2 - commutation à l'aide de la pause:
function myFunction(opt)
{
var retVal = "";
switch (opt)
{
case 1:
retVal = "One";
break;
case 2:
retVal = "Two";
break;
case 3:
retVal = "Three";
break;
}
return retVal;
}
Je sais que les deux fonctionnent, mais est-ce une des meilleures pratiques? J'ai tendance à aimer l'option 1 - changer en utilisant le meilleur retour, car c'est plus propre et plus 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;
}
Pour appeler la fonction, je le ferais de la manière suivante:
getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);
Le problème ici est qu'il renvoie toujours indéfini. Je suppose que c'est parce qu'il transmet la valeur réelle de l'objet littéral et non de la propriété. Que dois-je faire pour résoudre ce problème en utilisant la technique décrite dans les commentaires de @ ic3b3rg ?
javascript
return
switch-statement
break
Code Maverick
la source
la source
Réponses:
Une pause vous permettra de poursuivre le traitement dans la fonction. Le simple fait de revenir du commutateur est correct si c'est tout ce que vous voulez faire dans la fonction.
la source
return {1:"One",2:"Two,3:"Three"}[opt];
. Si vous avez besoin de la valeur par défaut, ce seraitvar o={1:"One",2:"Two,3:"Three"}; return opt in o?o[opt]:"";
return (opt in o) ? o[opt] : "";
, mais elle renvoie toujours la valeur par défaut dans mon cas spécifique."
dans"Two"
) mais ça marche pour moi ... voici un test simple:var o={1:"One",2:"Two",3:"Three"},opt=2; alert(opt in o?o[opt]:"");
Cela dépend, si votre fonction se compose uniquement de l'instruction switch, alors je pense que ça va. Cependant, si vous souhaitez effectuer d'autres opérations dans cette fonction, ce n'est probablement pas une excellente idée. Vous devrez peut-être également tenir compte de vos besoins dès maintenant par rapport à l'avenir. Si vous souhaitez changer votre fonction de l'option un à l'option deux, plus de refactoring sera nécessaire.
Cependant, étant donné que dans les instructions if / else, il est recommandé de procéder comme suit:
Sur cette base, on pourrait avancer que la première option est une meilleure pratique.
En bref, il n'y a pas de réponse claire, donc tant que votre code adhère à une norme cohérente, lisible et maintenable - c'est-à-dire ne mélangez pas les options une et deux dans votre application, c'est la meilleure pratique que vous devriez être Suivant.
la source
return foo == "bar";
return foo == "bar" ? 0 : 100;
quand même : ou mêmereturn [100,0][foo == "bar"];
.return [100,0][+(foo == "bar")];
?return [100,0][foo == "bar" & 1];