2015-05-22 8 views
9

Gibt es Fälle, in denenKann === halten wenn == nicht?

x == y //false 
x === y //true 

, dass jemals in JS möglich ist? :)

+2

Ich würde nicht so denken. Aber dann wieder, Javascript ist nie kurz von Überraschungen – AmmarCSE

+1

wenn die erste Zeile 'x' oder' y' geändert (mit einem muting Getter oder sogar ein overloaded valueOf), dann könnte es passieren, aber auf seinem Gesicht, nein. – dandavis

+0

der illustrativste und lehrreichste Weg, um zu sehen, dass es nicht möglich ist, ist diese Tabelle zu betrachten https://dorey.github.io/JavaScript-Equality-Table/ –

Antwort

8

Es wäre unmöglich. == vergleicht Wert, während === Wert und Typ vergleicht. Ihr Fall würde eine unmögliche Bedingung erfordern.

a === b -> (typeof(a) == typeof(b)) && (value(a) == value(b)) 
a == b -> (value(a) == value(b)) 

Sie können nicht die Wertvergleiche haben im == Fall wahr sein, während der exakt gleichen Vergleich in === wurde falsch erfordern.

10

Nein. Das ist nie möglich. === prüft auf Typ und Gleichheit. == prüft nur auf Gleichheit. Wenn etwas nicht == ist, kann es nie === sein.

3

== - Gibt true zurück, wenn die Operanden gleich sind.

- Gibt true zurück, wenn die Operanden gleich sind und vom gleichen Typ sind.

Also, ich sage nicht möglich.

2

Kurz gesagt, wenn === wahr ist, dann wird == wahr zurückgeben. Wenn === false zurückgibt, kann == möglicherweise nicht false zurückgeben.

Beispiele:

5===5 wahr ist, was bedeutet, dass 5==5 auch wahr sein muss.

'5'===5 ist falsch, und '5'==5 ist wahr.

'6'===5 ist falsch, und '6'==5 ist auch falsch.

Dieses Verhalten ist, weil a===b überprüft, um sicherzustellen, dass der Wert und die Art des a und b gleich ist, während a==b nur, um sicherzustellen, überprüft, ob ihre Werte gleich sind.

Verwandte Themen