1711 Stimmen

Unterschied zwischen == und === in JavaScript

Was ist der Unterschied zwischen == y === in JavaScript? Ich habe auch gesehen != y !== Betreiber. Gibt es noch mehr solcher Betreiber?

1 Stimmen

== es === mit Typkonvertierung (auch bekannt als Coercion). Um wirklich zu verstehen, was ich meine, können Sie sich diese JavaScript-Funktion ansehen, die sich genau so verhält == : stackoverflow.com/a/38856418/984780

0 Stimmen

3 Stimmen

Ah, ja, der abstrakte Gleichheitsoperator ( == ), auch bekannt als der Wenn-gleiche-Typ-dann-strenge-Gleichheit-Vergleich-sonst-behandeln-null-und-undefiniert-und-das-Dokument-alle-als-Gleiche-aber-wenn-Zeichenfolge-beteiligt-mit-Zahl-oder-bigint-dann-vergleiche-es-Zeichenfolge-zu-relevanten-numerischen-Typen-aber-wenn-boolesch-beteiligt- dann-verknüpfe-es-mit-Zahl-aber-wenn-Objekt-verknüpft-dann-verknüpfe-es-mit-Primitiv-und-wenn-numerische-Typen-verknüpft-dann-vergleiche-ihre-numerischen-Werte-mit-unterschiedlichen-Infinitäten-und-nicht-gleich-sein-und-dann-wiederhole-es-nach-Bedarf-Operator.

2036voto

sdfx Punkte 21393

Schauen Sie hier nach: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

Die 3 Gleichheitszeichen bedeuten "Gleichheit ohne Typenzwang". Bei Verwendung des dreifachen Gleichheitszeichens müssen die Werte auch vom Typ her gleich sein.

0 == false   // true
0 === false  // false, because they are of a different type
1 == "1"     // true, automatic type conversion for value only
1 === "1"    // false, because they are of a different type
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false

86 Stimmen

Danke für die klare Antwort! Ich schätze, wenn man es mit C# vergleicht, würde == auch == sein und === würde zu .Equals() übersetzt.

12 Stimmen

Was ist mit "new String()===new String()", beide Werte und Typen sind gleich. Aber die Anweisung gibt falsch zurück.

42 Stimmen

@hrishikeshp19: In diesem Fall sind die Werte tatsächlich unterschiedlich (unterschiedliche Objektreferenzen).

1211voto

Jack Sleight Punkte 16852

=== y !== sind strenge Vergleichsoperatoren:

JavaScript hat sowohl strict als auch Typ-konvertierenden Gleichheitsvergleich. Für strict Gleichheit der Objekte, die verglichen werden, müssen vom gleichen Typ sein und:

  • Zwei Zeichenketten sind streng gleich, wenn sie die gleiche Folge von Zeichen, die gleiche Länge und die gleichen Zeichen an den entsprechenden Positionen haben.
  • Zwei Zahlen sind streng gleich, wenn sie numerisch gleich sind (den den gleichen Zahlenwert haben). NaN ist nicht mit nichts gleichzusetzen, einschließlich NaN . Positive und negative Nullen sind gleich einander gleich.
  • Zwei boolesche Operanden sind streng gleich, wenn beide wahr sind oder beide falsch sind.
  • Zwei Objekte sind streng gleich, wenn sie sich auf dasselbe Object .
  • Null y Undefined Typen sind == (aber nicht === ). [D.h. ( Null==Undefined ) ist true sondern ( Null===Undefined ) ist false ]

Vergleich Operatoren - MDC

4 Stimmen

Wenn ich also zum Beispiel: if (input == null) ... Wird die Bedingung auch erfüllt, wenn die Eingabe undefiniert ist?

5 Stimmen

Die obigen Ausführungen lassen es so klingen, als würde ein ==-Vergleich nicht alle im ersten Aufzählungspunkt genannten Punkte prüfen, nämlich "dieselbe Zeichenfolge, dieselbe Länge und dieselben Zeichen an den entsprechenden Stellen", aber das ist tatsächlich der Fall. Soweit ich das beurteilen kann, ist der einzige wirkliche Unterschied beim Vergleich zweier Zeichenketten der mit ===, new String()===new String() gibt false zurück (unterschiedliche Objektreferenzen). Aber new String sollten ohnehin vermieden werden.

191 Stimmen

-Die Frage lautete: "Was ist der Unterschied?", und Sie haben nur die strikten Operatoren erklärt, nicht aber den Unterschied zwischen ihnen und den nicht-strikten Operatoren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X