2016-08-02 33 views
1

Ich fand nur ein Stück Code, in dem es eine Zeichenkette in eine Ganzzahl wie folgt verglichen:Wie funktioniert der Vergleich zwischen einer Zeichenkette und einer Ganzzahl in JavaScript?

var result = "text" > 127; 

und das Ergebnis dieser Zeile Code falsch ist. Ich habe auch versucht, es zu Gleichgestellten zu ändern oder zu weniger als und das Ergebnis war immer noch falsch:

var result = "text" === 127; 
var result = "text" < 127; 

Was bedeutet einen String und eine Zahl wie diese zu vergleichen, wenn sie immer false zurück, oder gibt es irgendwelche Fälle, in denen das wahr sein wird?

+0

Es funktioniert basierend auf abstrakten Gleichheitsvergleichsalgorithmus. Ich habe eine [opensource-Anwendung] (https://laraprabhu.github.io/) erstellt, um sie im Detail zu erklären. –

+1

Dokumentation hat dies abgedeckt. http://stackoverflow.com/documentation/javascript/208/comparison-operations/2110/abstract-equality-inequality-and-type-conversion#t=201608021517406880455 –

+0

@RichardHamilton Ich habe gerade festgestellt, es ist wahr, wenn die Zeichenfolge ist eine Zahl wie "3" == 3 – meJustAndrew

Antwort

1

Wenn Sie Zeichenfolge mit Zahl vergleichen, wird die Zeichenfolge in Zahl konvertiert, aber in diesem Fall "text" ist das Ergebnis NaN (übersetzt ist keine Zahl). Ergebnis immer falsch, weil NaN keine zu vergleichende Zahl ist.

mit diesem nachprüfen:

var n1 = Number("text"); 
console.log(n1); //show NaN 

So ...

var result = "text" > 127; 

Ist gleich

var result = NaN > 127; //result false always with any compare 

Aber, wenn der Text eine Zahl

umgewandelt werden kann
var result = "00999" > 127; //result true, because Number("00999") == 999 
+1

Danke! Dies erklärt, warum das Ergebnis immer falsch war. – meJustAndrew