Sprawdzam if(response[0].title !== undefined)
, ale pojawia się błąd:
Uncaught TypeError: Nie można odczytać właściwości „title” niezdefiniowanej.
javascript
undefined
Raimonds
źródło
źródło
Odpowiedzi:
response[0]
nie jest zdefiniowany, sprawdź, czy jest zdefiniowany, a następnie sprawdź jego tytuł właściwości.źródło
undefined
nie jest słowem kluczowym JavaScript (chociaż wszyscy myślą, że tak jest). Jeśli chcesz, możesz utworzyć zmienną o nazwie,undefined
a wtedy to sprawdzenie będzie niepoprawne. Jedynym prawidłowym sposobem jest sprawdzenie(typeof myVar !== 'undefined')
.undefined
?Po prostu sprawdź, czy
response[0]
jest niezdefiniowany:Jeśli nadal musisz wyraźnie sprawdzić tytuł, zrób to po wstępnym sprawdzeniu:
źródło
Miałem problem ze wszystkimi innymi przykładami kodu powyżej. W Chrome taki warunek działał dla mnie:
Będę musiał to przetestować w innych przeglądarkach i zobaczyć, jak się sprawy potoczyły.
źródło
undefined
musiałem być sznurkiem.W rzeczywistości musisz go otoczyć blokiem Try / Catch, aby Twój kod nie przestał działać. Lubię to:
źródło
typ:
źródło
Stanie się tak, ponieważ
response[0]
sama nie jest zdefiniowana.źródło
Sprawdź, czy
condition == null
; To rozwiąże problemźródło
Sprawdź, czy
response[0]
naprawdę istniejesz, wydaje się, że błąd sugeruje, że tak nie jest.źródło
Najpierw musisz sprawdzić, czy
response[0]
jest niezdefiniowany i tylko jeśli nie jest, sprawdź resztę. Oznacza to, że w twoim przypadku nieresponse[0]
jest zdefiniowany.źródło
Wiem, że spóźniłem się 7 miesięcy, ale znalazłem te pytania i wygląda to interesująco. Próbowałem tego na konsoli przeglądarki.
Jeśli zmienna x nie jest zdefiniowana, błąd jest wychwytywany i będzie fałszywy, jeśli nie, zwróci true. Możesz więc użyć funkcji eval, aby ustawić wartość na zmienną
źródło
W niektórych z tych odpowiedzi istnieje podstawowe nieporozumienie dotyczące sposobu korzystania
typeof
.Błędny
Poprawny
Powodem jest to, że
typeof
zwraca ciąg. Dlatego powinieneś sprawdzić, czy zwrócił ciąg „niezdefiniowany” zamiastundefined
(nie ujęty w cudzysłów), który sam jest jednym z podstawowych typów JavaScript .typeof
Operator nigdy nie zwróci wartość typuundefined
.Uzupełnienie
Twój kod może technicznie działać, jeśli użyjesz niepoprawnego porównania, ale prawdopodobnie nie z tego powodu. W
undefined
JavaScript nie ma żadnej istniejącej zmiennej - to nie jest jakieś magiczne słowo kluczowe, z którym można porównać różne rzeczy. Możesz utworzyć zmienną o nazwieundefined
i nadać jej dowolną wartość.A oto przykład, w jaki sposób możesz to wykorzystać, aby udowodnić, że pierwsza metoda jest niepoprawna:
https://jsfiddle.net/p6zha5dm/
źródło