2010-09-14 2 views
5

Ist es eine gute Vorgehensweise, "return false" zu verwenden? im Grunde sagen, nichts in einer if-Anweisung tun? Zum Beispiel:Javascript gibt false in if-Anweisungen zurück

if (navigator.userAgent.match(/iPad/i) != null) { 
    return false; 
} else { 
    //Usual script here 
} 

Ich frage mich nur, ob es irgendwelche Rückschläge zu diesem gibt. Ich kann die if-Anweisung ohne das else verwenden, aber ich möchte nur einen Einblick bekommen. Ich habe ein Plugin, das ich nicht auf dem iPad laufen lassen will und so wickle ich es in den bedingten. irgendwelche Kommentare würden geschätzt werden!

+0

@ user234694 - Bitte Codezeilen um vier Leerzeichen einrücken oder sie werden nicht als Code formatiert. –

+0

Besser beginnen, Antworten zu markieren oder niemand wird Ihre Fragen in der Zukunft beantworten. Mit deinem Benutzernamen von Zufallszahlen vermute ich, dass es dir egal ist. – epascarello

+0

Danke für den Zeiger. Wie markiere ich meine Antworten und was bedeutet das wirklich? – designerdre101

Antwort

4

Meiner Erfahrung nach nur, wenn Sie tatsächlich nach dem Falschen suchten, um zurückgegeben zu werden.

+0

Mit anderen Worten, wenn Sie "nichts tun" wollen, ist es besser, tatsächlich "nichts zu tun", als "hier rauszukommen und ihnen zu sagen, dass es falsch ist". Wenn man "nichts macht", ist es auch gut, es explizit zu machen, dass man "nichts tut" und nicht einfach "vergessen", Code mit etwas wie "// Do not nothing" einzugeben. –

+0

Danke für die Info, das hat mir sicherlich geholfen, die Einsicht zu gewinnen Ich suche. – designerdre101

0

Sie sollten nur einen Wert zurückgeben, wenn ein Aufrufer etwas mit diesem Wert tun wird. Wenn du in einer if-Anweisung "nichts" machen willst, ist das ein Zeichen dafür, dass deine Logik falsch ist. Ändern Sie Ihre Erklärung dazu:

if (navigator.userAgent.match(/iPad/i) == null) { 
    //Usual script here 
} 

Auf diese Weise brauchen Sie nicht zu „brechen“ aus Ihrer Funktion mit der Rückkehr (keine gute Praxis in diesem Szenario).

+0

Ich bevorzuge eigentlich "nichts tun" in einer "if" -Anweisung manchmal, um meinen Code sauberer zu machen (anstatt weiter einzunicken). – palswim

+3

Ich verstehe das aber nicht. Warum habe ich 'if (condition) {} else {// mach etwas} 'wenn du' if (! Condition) {// tu etwas}} –

+0

haben kannst Es ist nie mit einem einzigen 'else', sondern eher wie' if (! Bedingung) {} sonst if (Bedingung 2) {/ * Etwas tun * /} else {/ * Etwas anderes tun * /} 'statt 'if (Bedingung) {if (Bedingung 2) {/ * Etwas tun */} else {/ * Mach etwas anderes * /}} '. Es macht meinen Code weniger Einrückung, und ich denke, ein Compiler wird das optimieren, wie es ihm passt. – palswim

2

Sie können es tatsächlich weiter vereinfachen, wie folgt aus:

if (navigator.userAgent.match(/iPad/i) != null) return false; 
//Usual script here 

Ist es "good practice" ... sicher, ob es für Sie und Ihr Team arbeitet. Wenn man aus einer Funktion aussteigt, sobald man nichts mehr zu tun hat, kann man sehr effizient etwas tun, solange es für jeden, der daran arbeitet, einfach zu verstehen und zu pflegen ist.

Ob Sie speziell false möchten, hängt von der Situation ab. Wenn Sie beispielsweise zurückkehren möchten, aber nicht verhindern, dass andere Ereignishandler später ausgeführt werden, können Sie stattdessen return true; verwenden.

+0

Vielen Dank für die Informationen, die mir sicherlich geholfen haben, die Einsicht zu bekommen, die ich suche. – designerdre101

9

Gruppe 1 wird sagen, dass es eine schreckliche Übung ist, da es schwer zu folgen ist.

Gruppe 2 wird sagen, tun Sie es.

Gruppe 3 wird sagen, es tun, aber in 1 Zeile

Gruppe 4 wird sagen Sie das sonst nicht verwenden

Gruppe 5 sagen, nicht zu tun, um die Rückkehr zu verwenden, benutzen Sie einfach die, wenn um den Code du willst laufen. Alias:

if (navigator.userAgent.match(/iPad/i) === null) { 
    //Usual script here 
} 
+20

Was passiert, wenn alle 5 Gruppen in eine Bar gehen? –

+2

Sie würden einen Kampf haben. Bud Spencer Stil! – cwap

+3

Gruppe 6 wird sagen, dass Sie nicht den richtigen Bracing-Stil verwenden. –

0

Ich stimme mit snkmchnb, sonst nur die Bedingung negieren. Sie können langen Ausdruck mit diesen negieren:

!(a && b) = !a || !b 
!(a || b) = !a && !b 

Und verwenden Sie diese mehrmals, um zu bekommen, was Sie wollen. Zum Beispiel negiert einen langen Ausdruck

!((a && b || c) && (d || e) || f) = 
    !((a && b || c) && (d || e)) && !f = 
    (!(a && b || c) || !(d || e)) && !f = 
    (!(a && b) && !c || !d && !e) && !f = 
    ((!a || !b) && !c || !d && !e) && !f 

Das jetzt hässlich aussieht, aber die meiste Zeit negiert bedeutet nicht zu verkomplizieren. Zum Beispiel negiert "< =" ergibt ">"

Also nie benutzen!(Long_expression) weder:

if (long expression) 
{ 
} 
else 
{ 
    //do stuff here 
} 
+0

Als Referenz werden diese die DeMorgan Gesetze (http://en.wikipedia.org/wiki/De_Morgan's_laws) genannt. Und Sie haben einen Tippfehler im zweiten Gesetz: Sie wollen Pony, keine Pfeifen. –

+0

@Martinho - Pony? --- Oh du meinst Ausrufezeichen ... 'nicht's? ==> '!' –

+0

@Martinho Fernandes right, thx – SinistraD

0

erstens ist es eine sehr gute Übung, nehmen Sie dieses Beispiel

var window.__page_loaded__; 
var Loadpage = function() 
{ 
    if(window.__page_loaded__ != undefined) 
    { 
     return; //The page has already laoded 
    } 

    //Proceed to load the page 
} 

durch die Verwendung von return; Sie das gleiche zu tun wie mit einer else Aussage aber ohne den zusätzlichen Block, und da Loadpage() normalerweise keine Daten zurückgibt, ist es vollkommen in Ordnung, den Code zu kürzen.

+0

Danke für die Info, das hat mir sicherlich geholfen, die Einsicht zu bekommen, die ich suche. – designerdre101