2011-12-16 14 views
6

ja zawsze myślałem, że po prostu sprawdzić niezdefiniowanej var porównując ją do niezdefiniowana, ale jest to błąd pojawia się w konsoli chrome:Jak sprawdzić, czy zmienna lub obiekt jest niezdefiniowany?

enter image description here

jaki sposób mogę sprawdzić, czy obiekt jQuery jest niezdefiniowany ?

EDIT:

enter image description here

if (jQuery) daje mi problemów zbyt

EDIT:

rozwiązanie:

if(window.jQuery) prace. typeof(jQuery) == 'undefined' też działa.

Czy ktoś może wyjaśnić, dlaczego?

+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 –

Odpowiedz

9

Istnieje kilka rozwiązań:

  1. Zastosowanie typeof. Jest to specjalny operator i nigdy nie będzie skutkował ReferenceError. Wartość "nieokreślona" jest określana jako wartość oznaczająca undefined wartość lub dla zmiennej, która nie istnieje w kontekście. Nie jestem fanem tego, ale wydaje się bardzo powszechny.

  2. Użyj window.jQuery. Zmusza to "wyszukiwanie właściwości": wyszukiwania właściwości nigdy nie zawodzą i zwracają undefined, jeśli wspomniana właściwość nie istnieje. Widziałem go używany w niektórych frameworkach. Ma wadę zakładając kontekst (zwykle window).

  3. Upewnij się, że zmienna jest "zadeklarowana": var jQuery; if (jQuery) { /* yay */ }. Nie wydaje się bardzo powszechny, ale jest całkowicie poprawny. Pamiętaj, że var to tylko adnotacja i jest podnoszona. W kontekście globalnym utworzy to właściwość "jQuery".

  4. Złap ReferenceError. Szczerze mówiąc, nigdy tego nie widziałem ani nie polecam, ale to by działało.

Szczęśliwe kodowanie.

2

O ile wiem, można zrobić

if(typeof X == 'undefined') 

Ale istnieją zasoby ładowarka może chcesz przyjrzeć. I odpowiedź udzielona przede mną również jest prawidłowa.

-1

if(jQuery) powinno wystarczyć, nieprawdaż?

+0

Nie. Może wywołać ReferenceError (co powyżej jest we wpisie). –

3

Od here

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

Chociaż to "oszustwa" z 'var test = 1' jako, że kontekst nie jest taki sam :) Mimo to nadal byłoby to możliwe bez tej sytuacji. –

+0

Poprawione. Dzięki. –

5

Procesu 1:

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

Sposób 2:

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

Nie, może to spowodować błąd ReferenceError, co jest widoczne w poście. –

+0

Proces nr 2 jest tutaj bezpieczny/poprawny. Często widzę, że '===' używane wyłącznie z 'typeof', ale wygląda poprawnie. –

1

Zmienna o nazwie "jQuery" w kodzie nigdy nie został uznany , więc wyświetli błąd "xxx (nazwa zmiennej) nie jest zdefiniowany".

Można użyć operatora typeof sprawdzić to zmienna nie jest zdefiniowana lub nie

if (typeof(jQuery) == "undefined") 
Powiązane problemy