Sprawdzam if(response[0].title !== undefined), ale pojawia się błąd:
Uncaught TypeError: Nie można odczytać właściwości „title” niezdefiniowanej.
Sprawdzam if(response[0].title !== undefined), ale pojawia się błąd:
Uncaught TypeError: Nie można odczytać właściwości „title” niezdefiniowanej.
Odpowiedzi:
response[0] nie jest zdefiniowany, sprawdź, czy jest zdefiniowany, a następnie sprawdź jego tytuł właściwości.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefinednie jest słowem kluczowym JavaScript (chociaż wszyscy myślą, że tak jest). Jeśli chcesz, możesz utworzyć zmienną o nazwie, undefineda wtedy to sprawdzenie będzie niepoprawne. Jedynym prawidłowym sposobem jest sprawdzenie (typeof myVar !== 'undefined').
undefined?
Po prostu sprawdź, czy response[0]jest niezdefiniowany:
if(response[0] !== undefined) { ... }
Jeśli nadal musisz wyraźnie sprawdzić tytuł, zrób to po wstępnym sprawdzeniu:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
Miałem problem ze wszystkimi innymi przykładami kodu powyżej. W Chrome taki warunek działał dla mnie:
typeof possiblyUndefinedVariable !== "undefined"
Będę musiał to przetestować w innych przeglądarkach i zobaczyć, jak się sprawy potoczyły.
undefinedmusiałem być sznurkiem.
W rzeczywistości musisz go otoczyć blokiem Try / Catch, aby Twój kod nie przestał działać. Lubię to:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
typ:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Stanie się tak, ponieważ response[0]sama nie jest zdefiniowana.
Najpierw musisz sprawdzić, czy response[0]jest niezdefiniowany i tylko jeśli nie jest, sprawdź resztę. Oznacza to, że w twoim przypadku nie response[0]jest zdefiniowany.
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.
try{x,true}catch(e){false}
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ą
var isxdefined = eval('try{x,true}catch(e){false}')
W niektórych z tych odpowiedzi istnieje podstawowe nieporozumienie dotyczące sposobu korzystania typeof.
Błędny
if (typeof myVar === undefined) {
Poprawny
if (typeof myVar === 'undefined') {
Powodem jest to, że typeofzwraca ciąg. Dlatego powinieneś sprawdzić, czy zwrócił ciąg „niezdefiniowany” zamiast undefined(nie ujęty w cudzysłów), który sam jest jednym z podstawowych typów JavaScript . typeofOperator nigdy nie zwróci wartość typu undefined.
Uzupełnienie
Twój kod może technicznie działać, jeśli użyjesz niepoprawnego porównania, ale prawdopodobnie nie z tego powodu. W undefinedJavaScript 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 nazwie undefinedi nadać jej dowolną wartość.
let undefined = 42;
A oto przykład, w jaki sposób możesz to wykorzystać, aby udowodnić, że pierwsza metoda jest niepoprawna: