2011-09-28 17 views

risposta

72
if (typeof variable !== 'undefined') { 
    // .. 
} 
else 
{ 
    // .. 
} 

trovare maggiori spiegazioni qui:

JavaScript isset() equivalent

+3

Utilizzare! == per un confronto rigoroso e prestazioni migliori. –

+1

@ AmericanYak-in un * typeof * verifica l'algoritmo per la risoluzione di ['=='] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.3) e ['=== '] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.6) è identico poiché entrambi i valori hanno lo stesso tipo (stringa), quindi da dove proviene la migliore prestazione? – RobG

+0

Questo errore si verifica quando 'typeof null' è' Oggetto' – nikjohn

0

si può usare qualcosa di simile

if (typeof varname != 'undefined') 
    { 
     //do this 
    }  
    else 
    { 
     //do this 

    } 
3

È sufficiente controllare il tipo.

if(typeof yourVar !== "undefined"){ 
    alert("defined"); 
} 
else{ 
    alert("undefined"); 
} 
6

Utilizzare l'operatore in.

'myVar' in window; // for global variables only 

typeof controlli torneranno vero per una variabile se,

  1. che non è stato definito
  2. è stata definita e ha il valore undefined, o
  3. è stata definita ma non ancora inizializzato.

I seguenti esempi illustrano il secondo e il terzo punto.

// defined, but not initialized 
var myVar; 
typeof myVar; // undefined 

// defined, and initialized to undefined 
var myVar = undefined; 
typeof myVar; // undefined 
+0

È possibile utilizzare * nella finestra * solo nel caso particolare delle variabili globali in quanto sono anche proprietà dell'oggetto globale. Le variabili locali non hanno un oggetto variabile così accettabile. Supponendo che ci sia un oggetto finestra potrebbe essere ragionevole per i browser ma non è necessariamente vero in generale. – RobG

+1

@RobG - non deve essere 'window' o l'oggetto globale. Al suo posto è possibile utilizzare qualsiasi oggetto. Hai sollevato un buon punto sulle variabili definite localmente non accessibili qui. Sarò interessato a scoprire se esiste un modo per determinare l'indefinito per le variabili locali in base solo al primo criterio che ho. – Anurag

+0

Se si parla di variabili e scope, è possibile solo distinguere tra variabili globali (come sono proprietà dell'oggetto globale) e il resto. In una funzione annidata, è impossibile stabilire se un identificatore è una variabile di funzione locale o esterna perché non è possibile accedere agli oggetti variabili correlati. La risoluzione della proprietà dell'oggetto è una cosa diversa. – RobG

Problemi correlati