2011-12-16 14 views
6

Ho sempre pensato che avrei potuto solo controllare un var indefinita e confrontarlo con indefinito, ma questo è l'errore che ottengo nella console Chrome:Come verificare se una variabile o un oggetto non sono definiti?

enter image description here

Come Come faccio a verificare per l'oggetto jQuery non definite ?

EDIT:

enter image description here

se (jQuery) mi sta dando problemi troppo

EDIT:

soluzione:

if(window.jQuery) opere. typeof(jQuery) == 'undefined' funziona anche.

Qualcuno potrebbe spiegare perché?

+0

[http://stackoverflow.com/questions/8531059/how-to-check-if-a-variable-or-object-is-undefined/8531076#8531076][1] [1]: http://stackoverflow.com/questions/8531059/how-to-check-if-a-variable-or-object-is-undefined/8531076#8531076 –

+0

http: // stackoverflow.com/questions/27509/detecting-an-undefined-object-property-in-javascript, http://stackoverflow.com/questions/8531059/how-to-check-if-a-variable-or-object- is-undefined –

risposta

9

Ci sono diverse soluzioni:

  1. Usa typeof. È un operatore speciale e non darà mai un ReferenceError. Viene valutato "non definito" per, beh, il valore undefinedo per una variabile che non esiste nel contesto. Non ne sono un fan, ma sembra molto comune.

  2. Utilizzare window.jQuery. Ciò impone una "ricerca di proprietà": le ricerche di proprietà non falliscono mai e restituiscono undefined se detta proprietà non esiste. L'ho visto usato in alcune strutture. Ha lo svantaggio di assumere un contesto (di solito window).

  3. Assicurarsi che la variabile sia "dichiarata": var jQuery; if (jQuery) { /* yay */ }. Non sembra molto comune, ma è interamente valido. Si noti che var è solo un'annotazione e viene issato. Nel contesto globale ciò creerà la proprietà "jQuery".

  4. Cattura il ReferenceError. Onestamente, non l'ho mai visto né lo consiglio, ma funzionerebbe.

Felice codifica.

2

Per quanto ne so si può fare

if(typeof X == 'undefined') 

Ma ci sono risorse caricatore si potrebbe desiderare di dare un'occhiata a. E anche la risposta data prima di me è corretta.

-1

if(jQuery) dovrebbe essere sufficiente, non dovrebbe?

+0

No. Potrebbe generare un ReferenceError (ciò che è riportato nel post). –

3

Da here

if(typeof jQuery == "undefined") { 
    document.write("undefined"); 
}else{ 
    document.write("Exists"); 
} 
+0

Anche se questo "cheat" con 'var test = 1' come allora il contesto non è lo stesso :) Sarebbe comunque valido per questa situazione senza di esso, però. –

+0

corretto. Grazie. –

5

Processo 1:

if (jQuery) { 
    // jQuery is loaded 
} else { 
    // jQuery is not loaded 
} 

Processo 2:

if (typeof jQuery == 'undefined') { 
    // jQuery is not loaded 
} else { 
    // jQuery is loaded 
} 
+1

No, questo può generare un ReferenceError, come mostrato nel post. –

+0

Il processo n. 2 è sicuro/corretto qui. Spesso vedo '===' usato esclusivamente con 'typeof', ma sembra valido. –

1

La variabile chiamata "jQuery" nel codice non è mai stato dichiarato , quindi genererà un errore come "xxx (nome variabile) non è definito".

È possibile utilizzare l'operatore typeof da controllare è una variabile non è definita o no

if (typeof(jQuery) == "undefined") 
Problemi correlati