2009-11-13 12 views

risposta

13

Nessuno di quanto sopra.

Non si desidera utilizzare == o una varietà di esso, perché it performs type coercion. Se si desidera veramente verificare se qualcosa è esplicitamente nullo, utilizzare l'operatore ===.

Quindi, ancora una volta, la tua domanda mostra forse una mancanza di chiarezza delle tue esigenze. In realtà intendi esattamente null; o conta anche undefined? myVar === null ti dirà sicuramente se la variabile è nullo, che è la domanda che hai chiesto, ma è davvero questo che vuoi?

Si noti che ci sono molte più informazioni in this SO question. Non è un duplicato diretto, ma copre principi molto simili.

+0

I tipi Null e Undefined sono == (ma non ===). – rahul

+0

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators – rahul

+0

Grazie per il link adamantium, aggiunto alla mia risposta. –

4

preferisco

if (null == yourvar) 

che evita l'assegnazione accidentale in questo scenario

if (yourvar = null) 

Modifica

JavaScript ha sia rigorosa e il tipo di conversione confronto di uguaglianza. Per uguaglianza rigorosa gli oggetti confrontati devono avere lo stesso tipo e:

* Two strings are strictly equal when they have the same sequence of characters, 
    same length, and same characters in corresponding positions. 
* Two numbers are strictly equal when they are numerically equal (have the 
    same number value). NaN is not equal to anything, including NaN. 
    Positive and negative zeros are equal to one another. 
* Two Boolean operands are strictly equal if both are true or both are false. 
* Two objects are strictly equal if they refer to the same Object. 

tipi null e undefined sono == (ma non ===)

Leggi Comparison Operators

+0

Qualche motivo per il voto negativo? – rahul

+0

@adamantium: per favore modifica. Hai aggiunto molto dal mio downvote;) Originariamente hai completamente perso l'obiettivo della domanda (evitando 'indefinito'), che ora hai affrontato. –

0

Se non ti interessa se è precisamente null o undefined o false o 0, e vuoi solo vedere se è fondamentalmente "unset", non usare affatto un operatore:

if (yourVar) 
+1

L'unico problema è che se 'yourVar' è impostato su 0, o '0', o una stringa vuota, o forse un intero gruppo di altre cose, restituirà ancora' false'. Questo è un pessimo modo di verificare se è stato impostato in generale; applicabile solo se ** conosci ** tutti i valori possibili non sono * falsy *. –

+0

Sì. Ma dal momento che menziona il paragone sia con il punto nullo che con quello non definito, presumo che stia facendo qualcosa di oggettivo e non dovrà preoccuparsi di questi problemi. –

1

"undefined" non è "null".Confronta

  • il cucchiaio è vuoto (= null)
  • cucchiaio non esiste (= undefined)

alcuni fatti che possono aiutare ulteriormente

  • typeof indefinito è "indefinito "
  • tipo di valore null è" oggetto "
  • undefined è considerato uguale (==) a nul l e viceversa
  • altro valore è uguale (==) per null o undefined
0

if (null == yourvar) e if (typeof yourvar != 'undefined') fare cose molto diverse. Si presume che la variabile esista, l'altra sì. Suggerirei di non mescolare i due. Sapere quando aspettarsi che la variabile gestisca la sua presenza prima di affrontare il suo valore.

Problemi correlati