2016-05-03 5 views
2

Dieses Javascript-Konsolen-Log verwirrte mich. Wie kann x, das den Wert -1 hat, in der if-Anweisung als wahr gewertet werden, wenn die Zeile davor falsch ist? DankVariable auf Minuszahl gesetzt ergibt

x = -1 
-1 
x == true 
false 
if(x){console.log('yes')} 
yes 
+0

Negative Zahlen (außer Null) sind keine falschen Werte. – isherwood

+0

Siehe: http://StackOverflow.com/A/3619813 'x == wahr; // false' - der Boolesche Wert wird in diesem Fall in eine Zahl umgewandelt, und der Vergleich wird zu '-1 == 1 // false' – timolawl

+0

** Vergleiche ** einen Wert zu einem Booleschen Wert * ist * sehr * verschieden von ** ** einen Wert in einen booleschen Wert umwandeln. –

Antwort

1

Wenn Sie in Ihrer if-Anweisung x testen, überprüfen Sie nicht, ob x wahr ist, Sie überprüfen, ob x truthey ist. Die Regeln für die Wahrheit in Javascript sind:

leere Strings sind falsch. Alle anderen Saiten sind truthy. 0 und NaN sind falsch. alle anderen Zahlen sind truthy. alle Objekte und Arrays sind truthy. null und undefined sind falsch.

0
if(-1){console.log('yes')} 

druckt 'Ja' in der Konsole, weil -1 und andere Zahlen außer sind truthey Wert trotz -1 nicht gleich wahr.

Here ist eine gute Quelle für die Erweiterung des Wissens in Bezug auf Javascript truthey und falsche Werte.

Verwandte Themen