2014-09-25 9 views
8

Qual è il modo migliore per verificare se myvar javascript variable === false o meno (potrebbe essere anche indefinito).Controlla se la variabile è falsa e non è né vera né indefinita

if (myvar === false) 

andrebbe bene, ma myvar potrebbe essere indefinito. Solo il valore false è accettabile, non indefinito.

Qualsiasi più breve di if (typeof myvar !== "undefined" && myvar === false)?

+0

* Solo * 'false' o' undefined', o siete semplicemente alla ricerca di qualsiasi valore "falsy", che sarebbe solo 'se (myvar) ...'? – adeneo

+0

ciò che si dovrebbe dovrebbe funzionare bene, o se si voleva davvero essere espliciti poi 'if ((myvar === false) && (myvar! == non definito)) {' ' – PlantTheIdea

risposta

17

Se la variabile è dichiarata poi:

if (myvar === false) { 

funzionerà bene. === non considererà false undefined.

Se è undefinede non dichiarato allora si dovrebbe verificare il tipo prima di tentare di usarlo (altrimenti si ottiene un errore di riferimento).

if(typeof myvar === 'boolean' && myvar === false) { 

Detto questo, è necessario assicurarsi che la variabile è sempre dichiarata se avete intenzione di provare a usarlo.

var myvar; 
// ... 
// some code that may or may not assign a value to myvar 
// ... 
if (myvar === false) { 
1

Che ne dici di if (myvar !== undefined && myvar === false)?

+0

undefined' può essere ridefinito ad alcuni altri valori, quindi dovresti sempre usare 'typeof' o definito locale' indefinito'. –

+0

@Derek 朕 會 功夫 Non più nei browser moderni. –

+0

@ IngoBürk: la maggior parte degli utenti su Internet non dispone di browser moderni, in particolare computer in ambienti commerciali. –

1
if(typeof myvar === 'boolean' && !myvar)