„10“ Return True in JavaScript? " /> "10" True in JavaScript zurückgeben? " />
Javascript: Unvorhergesehenes Rätsel beim String-Integer-Vergleich
Im Bereich der Webentwicklung ist es oft notwendig, Parameter zu vergleichen, die als Strings oder ganze Zahlen gespeichert sind. Allerdings ist ein eigenartiger Fehler aufgetaucht, der Entwicklern Kopfzerbrechen bereitet. Ganzzahlvergleiche scheinen sich unregelmäßig zu verhalten, als ob die Parameter als Zeichenfolgen behandelt würden Stattdessen.
Betrachten Sie dieses verblüffende Beispiel: Wenn der Code console.log("2" > "10") ausgeführt wird, gibt er unerwartet „true“ zurück. Dies widerspricht allen logischen Erwartungen, da 2 numerisch ist kleiner als 10.
Was ist also die Ursache für dieses eigenartige Verhalten? Es stellt sich heraus, dass die Vergleichsoperatoren von Javascript standardmäßig lexikalische Vergleiche durchführen Beim Vergleich von Zeichenfolgen und Ganzzahlen werden die Zeichenfolgen als Unicode-Codepunkte behandelt und zeichenweise verglichen. In diesem Fall ist die führende „2“ in der Zeichenfolge „2“ lexikalisch größer als die führende „1“ in „10“. das Ergebnis.
Um dieses Problem zu lösen, ist es wichtig, die String-Parameter explizit in Ganzzahlen zu analysieren. Dies kann mithilfe der parseInt-Funktion erreicht werden, wie im folgenden Code gezeigt:
console.log(parseInt("2", 10) > parseInt("10", 10));
Durch das Parsen der Zeichenfolgen in Ganzzahlen stellen wir sicher, dass numerische Vergleiche korrekt durchgeführt werden, ohne lexikalischen Fallstricken zum Opfer zu fallen.
Das obige ist der detaillierte Inhalt vonWarum gibt „2' > „10' in JavaScript „True' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!