2015-05-22 27 views
9

Ci sono casi in cuiPuò contenere === quando == non lo fa?

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

è che mai possibile in JS? :)

+2

Non lo penserei. Ma poi di nuovo, javascript non è mai a corto di sorprese – AmmarCSE

+1

se la prima riga ha cambiato 'x' o' y' (usando un getter mutante o anche un valore di overloadOf), allora potrebbe succedere, ma sul suo volto, no. – dandavis

+0

il modo più illustrativo ed educativo per vedere che non è possibile è guardare questa tabella https://dorey.github.io/JavaScript-Equality-Table/ –

risposta

8

Sarebbe impossibile. == confronta il valore, mentre === confronta valore e tipo. Il tuo caso richiederebbe una condizione impossibile.

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

Non si potrebbe avere il confronto di valore nel caso == essere vero, ma richiede la stessa identica confronto in === diventare falso.

10

No. Questo non è mai possibile. === controlla il tipo e l'uguaglianza. == solo controlli per l'uguaglianza. Se qualcosa non è == non può mai essere ===.

3

== - Restituisce vero se gli operandi sono uguali.

=== - Restituisce vero se gli operandi sono uguali e dello stesso tipo.

Quindi, dirò che lo non è possibile.

2

In breve, se === è vero, allora == restituirà true. Se === restituisce false, quindi == può o non può restituire falso.

Esempi:

5===5 è vero, il che significa che 5==5 deve essere anche vero.

'5'===5 è falso e '5'==5 è vero.

'6'===5 è falso e '6'==5 è anche falso.

Questo comportamento è dovuto al fatto a===b controlli per assicurarsi che il valore e il tipo di a e b sono uguali, mentre a==b solo controlla per assicurarsi che i loro valori sono uguali.

Problemi correlati