2016-05-12 4 views
0

Wenn ich dies ausführen:String vor logischen Operator wird nicht Anzeige in alert()

alert("Is 4 equal to 5 ? lets see " + 4 == 5) 

Es zeigt den logischen Wert als falsch, aber der ehemalige Zeichenfolge „Ist 4 gleich 5 mal sehen“ ist fehlt, kann jemand erklären, warum ist das so?

+1

Reihenfolge der Operationen. Es gibt einen Befehl zum Wahnsinn, genau wie wenn man mathematische Gleichungen macht. – epascarello

Antwort

6

Ausführung wird passieren Linie dies:

"Is 4 equal to 5 ? lets see " + 4 // "Is 4 equal to 5 ? lets see 4" 
"Is 4 equal to 5 ? lets see 4" == 5 // false 
alert(false); 

Was Sie wollen, ist:

"Is 4 equal to 5 ? lets see " + (4 == 5) 

die wie folgt auswertet:

4 == 5 // false 
"Is 4 equal to 5 ? lets see " + false 
alert("Is 4 equal to 5 ? lets see false") 
+1

Warnung (Array (16) .join ("wat" -1) + "Batman"); – SparK

+0

Wenn der Text und false angezeigt werden soll, speichern Sie das Ergebnis des Vergleichs in einer Variablen wie 'var result = 4 == 5;' und dann 'alert ("Ist 4 gleich 5? Lets see" + result); ' – HarlemSquirrel

+0

Ahh ich sehe jetzt, das war auch die Ursache von irgendwann Anzeige falscher boolscher Wert gelöst, dass auch – Viney

3

Ihre Eingaben werden als verglichen werden,

"Is 4 equal to 5 ? lets see 4" == 5 

die Teilenummer Vergleich zu einer Klammer Wickel,

alert("Is 4 equal to 5 ? lets see " + (4 == 5)); 

Und warum dies in Ihrem Fall geschieht?

Da + wird mit einer höheren Priorität als == Vergleichsoperator in der table of precedence. So wird + Teil ausgewertet und dann mit der Nummer verglichen.

Und warum machen Klammern einen Unterschied?

() Gruppierung hat höchste Priorität, daher wird zuerst ausgewertet. Daher werden die Ausdrücke in ihm auch ausgewertet.

Verwandte Themen