Możliwy duplikat:
Wykrywanie niezdefiniowanej właściwości obiektu w niezdefiniowanym porównaniu JavaScript
javascript
Jak możemy dodać czek dla niezdefiniowanej zmiennej, na przykład:
function A(val) {
if (val == undefined)
// do this
else
// do this
}
javascript
jquery
undefined
Gaurav
źródło
źródło
Odpowiedzi:
Biblioteka JQuery została opracowana specjalnie w celu uproszczenia i ujednolicenia niektórych funkcji JavaScript.
Jeśli jednak chcesz porównać zmienną z
undefined
wartością, nie ma potrzeby wymyślania żadnej specjalnej metody, ponieważ JavaScript matypeof
operator, który jest prosty, szybki i wieloplatformowy:Zwraca ciąg znaków wskazujący typ zmiennej lub inny nieoceniony operand. Główną zaletą tej metody, w porównaniu do
if (value === undefined) { ... }
, jest to, żetypeof
nigdy nie zgłosi wyjątku w przypadku, gdy zmiennavalue
nie istnieje.źródło
("#myId")
, upewnij się, czego naprawdę potrzebujesz: a.typeof ("#myId")=== "undefined"
b. Lub:typeof ("#myId").val() === "undefined"
("#myId")
to nic innego jak stała łańcuchowa . Zawsze będzie zdefiniowany i będzie miał typ"string"
. Jeśli masz na myśli rzeczywisty obiekt jQuery utworzony za pomocą$("#myId")
, będzie on zawsze zdefiniowany jako"object"
(jeśli masz poprawnie połączony jQuery). Istnienie elementu DOM o identyfikatorzemyId
można ocenić za pomocąif ($("#myId").length > 0) { ... }
, natomiast sprawdzić, czy jego wartość nie jest pusta, można zrobić za pomocąif ($("#myId").val()) { ... }
. Żadna z tych klauzul tak naprawdę nie odnosi się do tematu tego pytania.value === undefined
zgłosi wyjątek, jeślivalue
zmienna nie istnieje. Więc to całkowicie zależy od Ciebie, czego użyjesz w prawdziwym życiu.W takim przypadku możesz użyć
=== undefined
porównania:if(val === undefined)
To działa, ponieważ
val
zawsze istnieje (jest to argument funkcji).Jeśli chcesz przetestować dowolną zmienną, która nie jest argumentem, tj. Może nie być w ogóle zdefiniowana, musisz użyć,
if(typeof val === 'undefined')
aby uniknąć wyjątku w przypadku, gdyval
nie istnieje.źródło
Zwróć uwagę, że typeof zawsze zwraca ciąg i nie generuje błędu, jeśli zmienna w ogóle nie istnieje.
źródło
===
zamiast==
Wiem, że jestem spóźniony, aby odpowiedzieć na tę funkcję, ale jquery ma wbudowaną funkcję do tego
Zobacz dokument jquery API jquery.type https://api.jquery.com/jQuery.type/ .
źródło
Możesz użyć metody skróconej, aby sprawdzić, czy jest ona niezdefiniowana, czy zerowa
mam nadzieję, że to ci pomoże
źródło
źródło
kiedy testuję „
typeof obj === undefined
”,alert(typeof obj)
zwracanieobject
, mimo że obj jest niezdefiniowane. Ponieważ obj jest typemObject
zwracaniaObject
, nieundefined
.Więc po godzinach testów wybrałem poniższą technikę.
Nie jestem pewien, dlaczego pierwsza technika nie zadziałała, ale wykonałem swoją pracę, używając tej.
źródło
Jeśli masz nazwy elementu, a nie id, możemy uzyskać niezdefiniowane sprawdzenie wszystkich elementów tekstowych (na przykład) jak poniżej i wypełnić je wartością domyślną, powiedzmy 0.0:
źródło
Nie jestem pewien, czy to najlepsze rozwiązanie, ale działa dobrze:
źródło
spróbuj tego ~ sprawdzania wszystkich typów
źródło
Możesz użyć dwóch sposobów 1)
if ( val == null )
2)if ( val === undefine )
źródło