2015-12-15 10 views
8

Soweit ich verstehe, Kurzschließen mit dem logischen UND & & Operator funktioniert wie folgt aus:Kurzschluss mit einer return-Anweisung

Angenommen ich die Ausdrücke haben a und b dann a && b die gleiche wie a ? b : a ist seit

wenn a truthy ist, dann wird das Ergebnis sein b und wenn a ist falsy dann wird das Ergebnis a (ohne selbst b zu lösen zu versuchen)

Wenn das der Fall, warum der folgende (Demo) Code, um eine Syntax werfen:

var add = function(a,b) { 
    b && return a+b; // if(b) return a+b 
    ... 
} 

Gibt es eine Möglichkeit zu Kurzschluss mit einer return-Anweisung?

Antwort

11

Der binäre Operator && benötigt beide Teile Ausdrücke.

return something ist eine Anweisung, aber kein Ausdruck (es erzeugt keinen Wert, da ein Wert nicht nützlich wäre, wenn die Funktion endet).

Verwenden Sie einfach

if (b) return a+b; 

mit dem zusätzlichen Vorteil einer einfacheren Code zu lesen.

Lesen Sie mehr:

2

Nein, return ist eine Aussage, können Sie es nicht als Teil verwenden von ein UND-Ausdruck.

Sie können den Code auf eine einzige return Aussage verwandeln zwar, wenn Sie aus irgendeinem Grund brauchen, dass:

if (b) return a+b; 
/* else */ ... 

ist (mehr oder weniger) entspricht

return b && a+b || (...); 

Natürlich in jeder Code, dass Sie von Hand schreiben und lesen Sie mit Ihren Augen, you should just an if statement sowieso.

Verwandte Themen