Option 1 - Schalter mit Return:
function myFunction(opt)
{
switch (opt)
{
case 1: return "One";
case 2: return "Two";
case 3: return "Three";
default: return "";
}
}
Option 2 - Schalter mit 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;
}
Ich weiß, dass beide funktionieren, aber ist eine weitere bewährte Methode? Ich mag Option 1 - schalte am besten mit Return um, da es sauberer und einfacher ist.
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;
}
Um die Funktion aufzurufen, würde ich dies auf folgende Arten tun:
getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);
Problem hierbei ist, dass es immer undefiniert zurückgibt. Ich vermute, dass es daran liegt, dass der tatsächliche Wert des Objektliteral und nicht die Eigenschaft übergeben wird. Was würde ich tun, um dies mit der in den Kommentaren von @ ic3b3rg beschriebenen Technik zu beheben ?
javascript
return
switch-statement
break
Code Maverick
quelle
quelle
Antworten:
Mit einer Pause können Sie die Verarbeitung in der Funktion fortsetzen. Nur aus dem Schalter zurückzukehren ist in Ordnung, wenn das alles ist, was Sie in der Funktion tun möchten.
quelle
return {1:"One",2:"Two,3:"Three"}[opt];
. Wenn Sie die Standardeinstellung benötigen, ist diesvar o={1:"One",2:"Two,3:"Three"}; return opt in o?o[opt]:"";
return (opt in o) ? o[opt] : "";
, aber in meinem speziellen Fall wird immer die Standardeinstellung zurückgegeben."
in"Two"
) , aber es funktioniert für mich ... hier ist ein einfacher Test:var o={1:"One",2:"Two",3:"Three"},opt=2; alert(opt in o?o[opt]:"");
Es kommt darauf an, ob Ihre Funktion nur aus der switch-Anweisung besteht, dann denke ich, dass es in Ordnung ist. Wenn Sie jedoch andere Vorgänge innerhalb dieser Funktion ausführen möchten, ist dies wahrscheinlich keine gute Idee. Möglicherweise müssen Sie Ihre Anforderungen jetzt und in Zukunft berücksichtigen. Wenn Sie Ihre Funktion von Option eins auf Option zwei ändern möchten, ist mehr Refactoring erforderlich.
Angesichts der Tatsache, dass in if / else-Anweisungen Folgendes empfohlen wird:
Auf dieser Grundlage könnte argumentiert werden, dass Option 1 eine bessere Praxis ist.
Kurz gesagt, es gibt keine klare Antwort. Solange Ihr Code einem konsistenten, lesbaren und wartbaren Standard entspricht - das heißt, mischen Sie die Optionen eins und zwei in Ihrer gesamten Anwendung nicht. Dies ist die beste Vorgehensweise, die Sie sein sollten folgenden.
quelle
return foo == "bar";
return foo == "bar" ? 0 : 100;
oder sogarreturn [100,0][foo == "bar"];
.return [100,0][+(foo == "bar")];
?return [100,0][foo == "bar" & 1];