Gleich, aber nicht größer oder gleich?

9

Vergleiche alles mit undefined wurde schon oft diskutiert, aber heute musste ich Elemente in Arrays vergleichen und irgendwann könnten Elemente im Array undefined sein und ich war neugierig wie sie miteinander verglichen werden . Ich fand, dass undefined == undefined ist true , aber gleichzeitig undefined >= undefined ist nicht true . Warte eine Sekunde, wenn etwas gleich ist, dann bedeutet auch größer oder gleich, wahr zu sein? So funktioniert Logik!

Ich kann alles akzeptieren, was der ECMA-Standard sagt, ich glaube, diese Jungs sind gesund und haben einen guten Grund für alles. Aber was auf der Erde könnte ein Grund für dieses Vergleichsverhalten sein? Wenn ich undefined implementieren würde, würde ich undefined für jeden Vergleich zurückgeben, der undefined als Operand hat. Aber sie entscheiden, boolean zurückzugeben, und warum sind die Ergebnisse so?

Nun denke ich, die beste Lösung besteht darin, jedes Auftreten von undefined auf besondere Weise mit mehreren% if -Anweisungen zu behandeln.

%Vor%     
exebook 02.12.2013, 06:42
quelle

1 Antwort

3
  

Aber was in aller Welt könnte der Grund für dieses Vergleichsverhalten sein?

Die ECMAScript -Spezifikation wurde nicht geschrieben, um zu beschreiben, wie JavaScript funktionieren sollte . Es wurde geschrieben, um zu beschreiben, wie JavaScript funktioniert eigentlich .

Die Sprache wurde schnell in Netscape Navigator implementiert und enthielt viele "Bugs" wie diese, die dann in der IE-Implementierung kopiert wurden. Schließlich wurde ECMAScript standardisiert, aber nicht bevor JavaScript in freier Wildbahn existierte. Die Standardisierung einer Sprache, die bereits verwendet wird, erfordert eine gewisse Rückwärtskompatibilität.

<= und >= weichen von == ab, weil der Standard dies sagt . Der Standard sagt das, weil sie so ursprünglich implementiert wurden.

    
zzzzBov 02.12.2013, 06:54
quelle

Tags und Links