Unterschied zwischen == und === in JavaScript [duplicate]

Lesezeit: 3 Minuten

Unterschied zwischen und in JavaScript duplicate
Schiwa

Was ist der Unterschied zwischen == und === in Javascript? habe ich auch gesehen != und !== Betreiber. Gibt es noch mehr solcher Operatoren?

  • == ist === mit Typkonvertierung (auch bekannt als Zwang). 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

    – Luis Pérez

    9. August 2016 um 17:17 Uhr


  • Einige möglicherweise überraschende Beispiele für ==.

    – WerkzeugmacherSteve

    27. Oktober 2020 um 19:41 Uhr


  • Ah, ja, der abstrakte Gleichheitsoperator (==), auch bekannt als wenn-gleicher-Typ-dann-strenger-Gleichheitsvergleich-andernfalls-behandle-null-und-undefiniert-und-Dokument-Punkt-alle-als-gleich-aber-wenn-String-beteiligt- mit-number-or-bigint-then-coerce-string-to-jeweiligen-numerischen-typ-aber-wenn-boolean-beteiligt-dann-coerce-it-to-number-but-if-object-involved-then- erzwingen-es-zu-primitiven-und-wenn-numerische-typen-beteiligt-sind-dann-vergleichen-sie-ihre-numerischen-werte-mit-eindeutigen-unendlichkeiten-und-nans-sind-ungleich-und-dann-wiederholen-wie- benötigter Betreiber.

    – Sebastian Simon

    15. März 2021 um 8:41 Uhr

Unterschied zwischen und in JavaScript duplicate
sdfx

Schau mal hier: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

Die 3 Gleichheitszeichen bedeuten „Gleichheit ohne Typenzwang“. Bei Verwendung von Triple Equals müssen die Werte auch vom gleichen Typ 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

  • Danke für die klare Antwort! Ich denke, im Vergleich zu C# wäre das == auch == und === würde zu .Equals() übersetzt werden.

    – Koen Zomers

    1. Februar 2011 um 13:02 Uhr

  • was ist mit “new String()===new String()”, beide Werte und Typen sind gleich. Aber die Aussage gibt false zurück.

    – hrishikeshp19

    18. September 2012 um 0:36 Uhr

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

    – l8nite

    23. Oktober 2012 um 3:27 Uhr

  • @KoenZomers Ich glaube nicht, dass Ihr C#-Fall richtig ist. Tatsächlich gibt es in C# keine Entsprechungen. == in C# führt einen Referenzvergleich durch und Equals führt einen vordefinierten Vergleich durch, keiner von ihnen hat auch in JavaScript Entsprechungen.

    – Erdmotor

    22. November 2012 um 2:37 Uhr

  • @hrishikeshp19, new String() ist kein String-Typ, sondern ein Objekt-Typ, also gilt die ===-Regel für Objekte. Die Verwendung primitiver Zeichenfolgen führt jedoch häufig dazu, dass die Zeichenfolgen dazu gezwungen werden String Objekte, also ist der Unterschied subtil. Wenn Sie zuordnen würden new String() zu zwei verschiedenen Objekten, s1 und s2der valueOf() -Methode für jede würde für jede eine Zeichenkette zurückgeben, und s1.valueOf() === s2.valueOf() würden zurückkehren true.

    – danorton

    14. Februar 2013 um 23:26 Uhr


Unterschied zwischen und in JavaScript duplicate
Jack Sleight

=== und !== sind strenge Vergleichsoperatoren:

JavaScript hat sowohl einen strikten als auch einen typkonvertierenden Gleichheitsvergleich. Zum strict Gleichheit die zu vergleichenden Objekte müssen denselben Typ haben und:

  • Zwei Zeichenfolgen sind absolut gleich, wenn sie dieselbe Zeichenfolge, dieselbe Länge und dieselben Zeichen an entsprechenden Positionen haben.
  • Zwei Zahlen sind streng gleich, wenn sie numerisch gleich sind (den gleichen Zahlenwert haben). NaN ist nicht gleich nichts, einschließlich NaN. Positive und negative Nullen sind einander gleich.
  • Zwei boolesche Operanden sind absolut gleich, wenn beide wahr oder beide falsch sind.
  • Zwei Objekte sind streng gleich, wenn sie sich auf dasselbe beziehen Object.
  • Null und Undefined Typen sind == (aber nicht ===). [I.e. (Null==Undefined) is true but (Null===Undefined) is false]

Vergleichsoperatoren – MDC

  • Also, wenn ich zum Beispiel mache: if (input == null) ...wird die Bedingung auch wahr, wenn die Eingabe nicht definiert ist?

    – Filip Vondrášek

    25. Januar 2013 um 23:42 Uhr

  • Das Obige lässt es so klingen, als ob ein ==-Vergleich nicht alle Dinge im ersten Aufzählungspunkt überprüfen würde, “dieselbe Zeichenfolge, dieselbe Länge und dieselben Zeichen an entsprechenden Positionen”, aber tatsächlich tut es dies. Soweit ich das beurteilen kann, besteht der einzige wirkliche Unterschied beim Vergleich zweier Zeichenfolgen darin, dass mit === new String()===new String() gibt false zurück (unterschiedliche Objektreferenzen). Aber new String sollte sowieso vermieden werden.

    – Matt Browne

    10. Februar 2013 um 1:44 Uhr


  • -1 Die Frage war “was ist der Unterschied?” und Sie haben nur die strengen Operatoren erklärt, aber nicht den Unterschied zwischen ihnen und den nicht strengen

    – CodyBugstein

    20. März 2014 um 7:21 Uhr

  • Ich habe nicht genau verstanden „Zwei Objekte sind absolut gleich, wenn sie sich auf dasselbe Objekt beziehen“ – was? mit zwei Objekten, bedeutet es zwei Referenzvariablen ..?

    – TJ

    30. September 2014 um 8:49 Uhr


  • Eine einfache englische Beschreibung des Problems finden Sie unter stackoverflow.com/a/38856418/984780

    – Luis Pérez

    2. März 2017 um 23:08 Uhr

978630cookie-checkUnterschied zwischen == und === in JavaScript [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy