2016-09-30 5 views
0

Es ist ein beliebtes Muster einen Standardwert zuzuweisen:Wird in Chrome Javascript Boolesche Ausdrücke korrekt ausgewertet?

var aBool = '' || false; 
var aString = false || ''; 

Die obige aBool boolean den Wert von false und aString den Wert eines leeren String, zumindest in Chrome und FF-Konsole geben würde. Das ist im Gegensatz zu:

Gibt Ausdruck1 zurück, wenn es in True konvertiert werden kann; Andernfalls wird expr2 zurückgegeben. Wenn Sie also mit Booleschen Werten arbeiten, || gibt true zurück, wenn entweder Operand in true umgewandelt werden kann; Wenn beide in false konvertiert werden können, gibt false zurück. Quelle: mozilla

, die tatsächlich praktisch ist, aber ist es richtig?

+1

Nein, es ist nicht und macht eigentlich keinen Sinn. Fühlen Sie sich frei, diese Seite zu bearbeiten ("So ..." Teil sollte entfernt werden). – georg

+0

"Gibt' expr1' zurück, wenn es in 'true' konvertiert werden kann; andernfalls gibt' expr2' "den wichtigen Teil des Satzes zurück –

+2

Was ist falsch, scheint mir richtig zu sein? * Wenn es mit booleans * verwendet wird, gibt es true zurück, wenn einer der Operanden wahr ist, oder false, wenn beide falsch sind? – adeneo

Antwort

0

Von dieser Web-Seite, heißt es:

Beispiele für Ausdrücke, die auf false umgewandelt werden können, sind:

  • null;
  • NaN;
  • 0;
  • leere Zeichenfolge ("");
  • undefined.

In Ihrem ersten Beispiel haben Sie einen leeren String, so wandelt es zu false wenn in einen Booleschen umgewandelt. Da expr1 nicht in true konvertiert werden kann, gibt der Ausdruck expr2 zurück, also false.

In Ihrem zweiten Beispiel ist expr1false, so kehrt expr2, die '' ist. Die Konvertierung in wird nur verwendet, um zu bestimmen, welcher Ausdruck zurückgegeben werden soll. Der konvertierte Wert wird nicht zurückgegeben.

+0

Danke, ich weiß, was es tut, nur verwirrt mit dem Doc. Es ist jetzt behoben, ich bin erleichtert;) – ptrk

Verwandte Themen