2010-01-25 5 views
17

Come Which equals operator (== vs ===) should be used in JavaScript comparisons? indica che sono praticamente identici tranne '===' garantisce anche l'uguaglianza di tipo e quindi '==' potrebbe eseguire la conversione del tipo. In Douglas Crockford's JavaScript: The Good Parts, si consiglia di evitare sempre '=='. Tuttavia, mi chiedo quale sia stato il pensiero originale di progettare due set di operatori di uguaglianza.Quando JavaScript == ha più senso di ===?

Hai mai visto situazioni che utilizzano "==" in realtà più adatto rispetto all'utilizzo di "==="?

risposta

17

Si consideri una situazione in cui si confrontano i numeri o stringhe:

if (4 === 4) 
{ 
    // true 
} 

ma

if (4 == "4") 
{ 
    // true 
} 

un nd

if (4 === "4") 
{ 
    // false 
} 

Questo vale per gli oggetti e gli array.

Quindi, nei casi di cui sopra, è necessario fare una scelta sensata se usare o == ===

+0

Non sto chiedendo la differenza tra i due, che viene risposto in 359494. Mi interessa sapere quando '==' sarebbe particolarmente adatto. – bryantsai

+5

@bryantsai: Lui te l'ha dato - confrontando le stringhe con i numeri senza usare manualmente 'parseInt'. – Anonymous

+0

mm .. non lo capisco, grazie. – bryantsai

0

== confronta se il valore dei 2 lati è lo stesso o no.

=== confronta se il valore e il tipo di dati dei 2 lati sono uguali o meno.

Dire che abbiamo

$var = 0; 

if($var == false){ 
    // true because 0 is also read as false 
} 

if(!$var){ 
    // true because 0 is also read as false 
} 

if($var === false){ 
    // false because 0 is not the same datatype as false. (int vs bool) 
} 

if($var !== false){ 
    // true becuase 0 is not the same datatype as false. (int vs bool) 
} 

if($var === 0){ 
    // true, the value and datatype are the same. 
} 

è possibile controllare http://www.jonlee.ca/the-triple-equals-in-php/

+3

-1 Riguarda JavaScript e non PHP. – Gumbo

3

vorrei suggerire che non v'è alcun problema con l'utilizzo ==, ma per capire quando e perché usarlo (vale a dire utilizzare === di regola e == quando serve a uno scopo). In sostanza, == solo ti dà notazione abbreviata - (! Vble) invece di fare qualcosa di simile

if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ... 

E 'molto più facile scrivere solo

if (vble == false) ... 

(O anche più facile da scrivere)

se ...

Ovviamente ci sono più esempi che cercare solo valori "veri" o "falsi".

Davvero, solo bisogno di capire quando e perché utilizzare == e ===, non vedo alcuna ragione per cui non usarlo == dove si adatta meglio ...

Un altro esempio sta usando queste abbreviazioni per consentire metodo shorthand chiama:

function func(boolOptionNotCommonlyUsed) { 
    if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true 
    //do something we rarely do 
    } 
    //do whatever func usually does 
} 

func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg 
5

La semplice risposta è che '==' ha più senso di '===' quando si vuole tipo coercizione per accadere durante il confronto.

Un buon esempio potrebbe essere il numero di essere passati in una stringa di query URL. Se ad esempio si dispone di contenuto impaginato e il parametro di query page contiene il numero di pagina corrente, è possibile verificare la pagina corrente con if (page == 1) ... anche se page è in realtà "1", non 1.