{"json_modified": "2015-04-22T06:25:39.812774", "slug": "Web/JavaScript/Vergleiche_auf_Gleichheit_und_deren_Verwendung", "tags": [], "locale": "de", "title": "Vergleiche auf Gleichheit und deren Verwendung", "translations": [{"title": "Equality comparisons and sameness", "url": "/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness", "tags": ["Sameness", "Intermediate", "JavaScript", "Comparison", "equality"], "summary": "Briefly, double equals will perform a type conversion when comparing two things; triple equals will do the same comparison without type conversion (by simply always returning false if the types differ); and Object.is
will behave the same way as triple equals, but with special handling for NaN
and -0
and +0
so that the last two are not said to be the same, while Object.is(NaN, NaN)
will be true
. (Comparing NaN
with NaN
ordinarily\u2014i.e., using either double equals or triple equals\u2014evaluates to false
, because IEEE 754 says so.) Do note that the distinction between these all have to do with their handling of primitives; none of them compares whether the parameters are conceptually similar in structure. For any non-primitive objects x and y which have the same structure but are distinct objects themselves, all of the above forms will evaluate to false.", "localization_tags": [], "locale": "en-US", "last_edit": "2015-02-11T05:51:30", "review_tags": []}, {"title": "Utiliser les diff\u00e9rents tests d'\u00e9galit\u00e9", "url": "/fr/docs/Web/JavaScript/Les_diff%C3%A9rents_tests_d_%C3%A9galit%C3%A9", "tags": ["Sameness", "Intermediate", "JavaScript", "Comparison", "equality"], "summary": "En r\u00e9sum\u00e9, l'\u00e9galit\u00e9 faible effectuera une conversion des deux \u00e9l\u00e9ments \u00e0 comparer avant d'effectuer la comparaison, l'\u00e9galit\u00e9 stricte effectuera la m\u00eame comparaison mais sans conversion pr\u00e9alable (elle renverra toujours false si les types des deux valeurs compar\u00e9es sont diff\u00e9rents), enfin Object.is()
se comportera comme l'\u00e9galit\u00e9 stricte sauf pour les valeurs NaN
, -0
et +0
: pour Object.is()
, -0
et +0
seront diff\u00e9rents mais on aura Object.is(NaN, NaN)
qui sera true
. (G\u00e9n\u00e9ralement, quand on compare NaN
avec NaN
en utilisant l'\u00e9galit\u00e9 stricte ou l'\u00e9galit\u00e9 faible, cela donne false
afin de respecter la norme IEEE 754.). On notera que pour ces trois op\u00e9rations, la comparaison s'effectue sur les valeurs des \u00e9l\u00e9ments qu'on compare, aucune de ces op\u00e9rations ne permet de comparer la structure des param\u00e8tres. Pour des objets non primitifs, x
et y
qui ont la m\u00eame structure mais qui sont des objets distincs, chacune des op\u00e9rations pr\u00e9sent\u00e9es ci-avant sera \u00e9valu\u00e9e \u00e0 false
.", "localization_tags": [], "locale": "fr", "last_edit": "2015-03-07T01:09:17", "review_tags": []}, {"title": "\u7b49\u4fa1\u6027\u306e\u6bd4\u8f03\u3068\u305d\u306e\u4f7f\u3044\u3069\u3053\u308d", "url": "/ja/docs/Web/JavaScript/Equality_comparisons_and_when_to_use_them", "tags": ["Guide", "Intermediate", "JavaScript", "Comparison", "equality"], "summary": "JavaScript \u306b\u306f 3 \u7a2e\u985e\u306e\u5024\u6bd4\u8f03\u6f14\u7b97\u5b50\u304c\u3042\u308a\u307e\u3059\u3002===
\u306b\u3088\u308b\u53b3\u683c\u306a\u7b49\u4fa1\u6027 (trict equality)\u3001==
\u306b\u3088\u308b\u5bdb\u5bb9\u306a\u7b49\u4fa1\u6027 (loose equality)\u3001Object.is
(ECMAScript 6 \u306e\u65b0\u6a5f\u80fd) \u3067\u3059\u3002\u3069\u306e\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3059\u308b\u304b\u306f\u3001\u3069\u306e\u3088\u3046\u306a\u6bd4\u8f03\u3092\u884c\u3044\u305f\u3044\u304b\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002", "localization_tags": [], "locale": "ja", "last_edit": "2014-06-07T01:51:23", "review_tags": []}, {"title": "Equality comparisons and when to use them", "url": "/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness", "tags": [], "summary": "\u7b80\u5355\u5730\u8bf4\uff0c\u4e24\u7b49\u53f7\u5224\u7b49\u4f1a\u5728\u6bd4\u8f83\u65f6\u8fdb\u884c\u7c7b\u578b\u8f6c\u6362\uff1b\u4e09\u7b49\u53f7\u5224\u7b49\u4e0d\u4f1a\u8fdb\u884c\u7c7b\u578b\u8f6c\u6362\uff08\u5982\u679c\u7c7b\u578b\u4e0d\u540c\u4f1a\u76f4\u63a5\u8fd4\u56de false \uff09\uff1b Object.is
\u5728\u4e09\u7b49\u53f7\u5224\u7b49\u7684\u57fa\u7840\u4e0a\u7279\u522b\u5904\u7406\u4e86 NaN
\u3001 -0
\u548c +0
\uff0c\u4fdd\u8bc1 -0 \u548c +0 \u4e0d\u518d\u76f8\u540c\uff0c\u4f46 Object.is(NaN, NaN)
\u4f1a\u8fd4\u56de true
\u3002\uff08\u50cf\u5176\u4ed6\u6570\u503c\u4e00\u6837\u6bd4\u8f83 NaN \u2014\u2014\u7531\u4e8e IEEE 754 \u7684\u89c4\u8303\uff0c\u65e0\u8bba\u4f7f\u7528\u53cc\u7b49\u53f7\u6216\u4e09\u7b49\u53f7\uff0c\u6bd4\u8f83 NaN \u90fd\u4f1a\u5f97\u5230 false \uff09\u4f46\u8bf7\u6ce8\u610f\uff0c\u6b64\u5916\uff0c\u8fd9\u4e09\u4e2a\u8fd0\u7b97\u7b26\u7684\u539f\u8bed\u4e2d\uff0c\u6ca1\u6709\u4e00\u4e2a\u4f1a\u6bd4\u8f83\u4e24\u4e2a\u53d8\u91cf\u662f\u5426\u7ed3\u6784\u4e0a\u6982\u5ff5\u7c7b\u4f3c\u3002\u5bf9\u4e8e\u4efb\u610f\u4e24\u4e2a\u4e0d\u540c\u7684\u975e\u539f\u59cb\u5bf9\u8c61\uff0c\u5373\u4fbf\u4ed6\u4eec\u6709\u76f8\u540c\u7684\u7ed3\u6784\uff0c \u4ee5\u4e0a\u4e09\u4e2a\u8fd0\u7b97\u7b26\u90fd\u4f1a\u8ba1\u7b97\u5f97\u5230 false \u3002", "localization_tags": [], "locale": "zh-CN", "last_edit": "2015-04-02T14:35:17", "review_tags": ["editorial"]}], "modified": "2015-04-22T06:25:37", "label": "Vergleiche auf Gleichheit und deren Verwendung", "localization_tags": [], "url": "/de/docs/Web/JavaScript/Vergleiche_auf_Gleichheit_und_deren_Verwendung", "last_edit": "2015-02-14T12:06:00", "summary": "Kurz gesagt nimmt double equals eine Typkonvertierung der Operanden vor, bevor der Vergleich der Werte gemacht wird. Bei triple equals werden die Werte ohne vorherige Typkonvertierung miteinander verglichen. Wenn sich die Datentypen der beiden Operanden unterscheiden liefert triple equals immer false
zur\u00fcck. Object.is
verh\u00e4lt sich wie triple equals und bietet dar\u00fcber hinaus eine spezielle Behandlung f\u00fcr NaN
und -0
und +0
an. -0
und +0
sind f\u00fcr Object.is
ungleich w\u00e4hrend Object.is(NaN, NaN) true
ist. Laut IEEE 754 ergibt ein Vergleich von zwei NaN
mit double equals oder triple equals false
. Diese drei Operationen unterscheiden sich ihrere Behandlung von primitiven Datentypen. Es wird nicht gepr\u00fcft, ob die beiden Operanden konzeptionell diesselbe Struktur besitzen. F\u00fcr die nichtprimitiven Objekte x und y, welche diesselbe Struktur besitzen aber zwei unterschiedliche Objekte sind, ergeben die drei Operationen false
.", "sections": [{"id": "Quick_Links", "title": "JavaScript Tutorials: JavaScript Guide Einf\u00fchrung Grammatik und Typen Kontrollfluss und Fehlerbehandlung Schleifen und Iterationen Funktionen Ausdr\u00fccke und Operatoren Zahlen und Zeitangaben Textformatierung Regul\u00e4re Ausdr\u00fccke Indexed collections Keyed collections Mit Objekten arbeiten Feinheiten des Objektmodells Iteratoren und Generatoren Metaprogrammierung Einleitend JavaScript Grundlagen Technologien\u00fcbersicht Einf\u00fchrung in objekt-orientiertes JavaScript Fortgeschritten Eine Wiedereinf\u00fchrung in JavaScript JavaScript Datenstrukturen Vergleiche auf Gleichheit Closures Erweitert Vererbung und Prototypenkette Strict Modus JavaScript Typed-Arrays Memory Management Concurrency Modell und Event-Loop Referenzen: Standardobjekte Globale Objekte Array ArrayBuffer [\u00dcbersetzen] Boolean DataView [\u00dcbersetzen] Date Error [\u00dcbersetzen] EvalError [\u00dcbersetzen] Float32Array [\u00dcbersetzen] Float64Array [\u00dcbersetzen] Function Generator [\u00dcbersetzen] GeneratorFunction [\u00dcbersetzen] Infinity Int16Array [\u00dcbersetzen] Int32Array [\u00dcbersetzen] Int8Array [\u00dcbersetzen] InternalError [\u00dcbersetzen] Intl [\u00dcbersetzen] Intl.Collator [\u00dcbersetzen] Intl.DateTimeFormat [\u00dcbersetzen] Intl.NumberFormat [\u00dcbersetzen] Iterator [\u00dcbersetzen] JSON [\u00dcbersetzen] Map [\u00dcbersetzen] Math NaN Number Object ParallelArray [\u00dcbersetzen] Promise Proxy [\u00dcbersetzen] RangeError [\u00dcbersetzen] ReferenceError [\u00dcbersetzen] Reflect [\u00dcbersetzen] RegExp Set [\u00dcbersetzen] StopIteration [\u00dcbersetzen] String Symbol [\u00dcbersetzen] SyntaxError [\u00dcbersetzen] TypeError [\u00dcbersetzen] TypedArray [\u00dcbersetzen] URIError [\u00dcbersetzen] Uint16Array [\u00dcbersetzen] Uint32Array [\u00dcbersetzen] Uint8Array [\u00dcbersetzen] Uint8ClampedArray [\u00dcbersetzen] WeakMap [\u00dcbersetzen] WeakSet [\u00dcbersetzen] decodeURI() [\u00dcbersetzen] decodeURIComponent() [\u00dcbersetzen] encodeURI() [\u00dcbersetzen] encodeURIComponent() [\u00dcbersetzen] escape() [\u00dcbersetzen] eval() isFinite() isNaN() null parseFloat() parseInt() [\u00dcbersetzen] undefined unescape() [\u00dcbersetzen] uneval() [\u00dcbersetzen] Ausdr\u00fccke & Operatoren Ausdr\u00fccke und Operatoren Arithmetic operators [\u00dcbersetzen] Array comprehensions [\u00dcbersetzen] Assignment operators [\u00dcbersetzen] Bitwise operators [\u00dcbersetzen] Comma operator [\u00dcbersetzen] Comparison operators [\u00dcbersetzen] Conditional (ternary) Operator [\u00dcbersetzen] Destructuring assignment [\u00dcbersetzen] Expression closures [\u00dcbersetzen] Generator comprehensions [\u00dcbersetzen] Grouping operator [\u00dcbersetzen] Legacy generator function expression [\u00dcbersetzen] Logical Operators [\u00dcbersetzen] Objekt Initialisierer Operator precedence [\u00dcbersetzen] Property accessors [\u00dcbersetzen] Spread operator [\u00dcbersetzen] class expression [\u00dcbersetzen] delete operator [\u00dcbersetzen] function expression [\u00dcbersetzen] function* expression [\u00dcbersetzen] in operator [\u00dcbersetzen] instanceof [\u00dcbersetzen] new operator [\u00dcbersetzen] super [\u00dcbersetzen] this [\u00dcbersetzen] typeof [\u00dcbersetzen] void operator [\u00dcbersetzen] yield [\u00dcbersetzen] yield* [\u00dcbersetzen] Anweisungen & Deklarationen Anweisungen und Deklarationen Legacy generator function [\u00dcbersetzen] block break class [\u00dcbersetzen] const continue [\u00dcbersetzen] debugger [\u00dcbersetzen] do...while [\u00dcbersetzen] empty [\u00dcbersetzen] export [\u00dcbersetzen] for [\u00dcbersetzen] for each...in [\u00dcbersetzen] for...in for...of [\u00dcbersetzen] function [\u00dcbersetzen] function* [\u00dcbersetzen] if...else import [\u00dcbersetzen] label [\u00dcbersetzen] let return [\u00dcbersetzen] switch [\u00dcbersetzen] throw [\u00dcbersetzen] try...catch [\u00dcbersetzen] var while [\u00dcbersetzen] with [\u00dcbersetzen] Funktionen Functions Arguments object Arrow functions [\u00dcbersetzen] Default parameters [\u00dcbersetzen] Methoden Definitionen Rest parameters [\u00dcbersetzen] getter [\u00dcbersetzen] setter [\u00dcbersetzen] Klassen Classes [\u00dcbersetzen] constructor [\u00dcbersetzen] extends [\u00dcbersetzen] static [\u00dcbersetzen] Weiteres Lexikalische Grammatik JavaScript Datenstrukturen Enumerability und Ownership von Eigenschaften Protokolle zur Iteration Strict Modus Zum Strict Modus wechseln Template Strings Veraltete Bestandteile Neu in JavaScript Neu in JavaScript ECMAScript 5 support in Mozilla [\u00dcbersetzen] ECMAScript 6 support in Mozilla [\u00dcbersetzen] ECMAScript 7 support in Mozilla [\u00dcbersetzen] Firefox JavaScript changelog [\u00dcbersetzen] New in JavaScript 1.1 [\u00dcbersetzen] New in JavaScript 1.2 [\u00dcbersetzen] New in JavaScript 1.3 [\u00dcbersetzen] New in JavaScript 1.4 [\u00dcbersetzen] Neu in JavaScript 1.5 Neu in JavaScript 1.6 Neu in JavaScript 1.7 New in JavaScript 1.8 New in JavaScript 1.8.1 Neu in JavaScript 1.8.5 Dokumentation: N\u00fctzliche Listen Index aller Seiten Index aller Methoden Index aller Eigenschaften Seiten mit dem Tag \"JavaScript\" Mitmachen Stand der JavaScript-Dokumentation Das MDN-Projekt"}, {"id": "Strikte_Gleichheit_mit_.3D.3D.3D", "title": "Strikte Gleichheit mit ==="}, {"id": "Lose_Gleichheit_mit_.3D.3D", "title": "Lose Gleichheit mit =="}, {"id": "Same-value_Gleichheit", "title": "Same-value Gleichheit"}, {"id": "Abstrakte_Gleichheit.2C_strikte_Gleichheit_und_same-value_Gleichheit_in_der_Spezifikation", "title": "Abstrakte Gleichheit, strikte Gleichheit und same-value Gleichheit in der Spezifikation"}, {"id": "A_model_for_understanding_equality_comparisons.3F", "title": "A model for understanding equality comparisons?"}, {"id": "When_to_use_Object.is_versus_triple_equals", "title": "When to use Object.is versus triple equals"}, {"id": "Siehe_auch", "title": "Siehe auch"}], "id": 132181, "review_tags": []}