Я проверяю if(response[0].title !== undefined)
, но я получаю ошибку:
Uncaught TypeError: Невозможно прочитать свойство 'title' из undefined.
Я проверяю if(response[0].title !== undefined)
, но я получаю ошибку:
Uncaught TypeError: Невозможно прочитать свойство 'title' из undefined.
Ответы:
response[0]
не определен, проверьте, определен ли он, а затем проверьте его заголовок свойства.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
это не ключевое слово JavaScript (хотя, кажется, все думают, что это так). Если вы хотите, вы можете создать переменную с именем, undefined
и тогда эта проверка будет неправильной. Единственный правильный способ - это проверить (typeof myVar !== 'undefined')
.
undefined
?
Просто проверьте, response[0]
не определено ли:
if(response[0] !== undefined) { ... }
Если вам все еще нужно явно проверить заголовок, сделайте это после начальной проверки:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
У меня были проблемы со всеми другими примерами кода выше. В Chrome это было условие, которое работало для меня:
typeof possiblyUndefinedVariable !== "undefined"
Мне придется проверить это в других браузерах и посмотреть, как идут дела, я полагаю.
undefined
что должна быть строка.
На самом деле вы должны окружить его блоком Try / Catch, чтобы ваш код не переставал работать. Как это:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
тип:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Это будет потому, что response[0]
сам не определен.
Сначала вы должны проверить, response[0]
является ли неопределенным, и только если это не так, проверьте все остальное. Это означает, что в вашем случае response[0]
не определено.
Я знаю, что я приехал сюда на 7 месяцев позже, но я нашел эти вопросы, и это выглядит интересно. Я попробовал это на моей консоли браузера.
try{x,true}catch(e){false}
Если переменная x не определена, ошибка отлавливается, и она будет ложной, в противном случае она вернет true. Таким образом, вы можете использовать функцию eval, чтобы установить значение переменной
var isxdefined = eval('try{x,true}catch(e){false}')
В некоторых из этих ответов есть фундаментальное недоразумение о том, как использовать typeof
.
некорректный
if (typeof myVar === undefined) {
Верный
if (typeof myVar === 'undefined') {
Причина в том, что typeof
возвращает строку. Следовательно, вы должны убедиться, что она вернула строку «undefined», а не undefined
(не заключенную в кавычки), которая сама по себе является одним из примитивных типов JavaScript . typeof
Оператор никогда не возвращает значение типа undefined
.
добавление
Ваш код может технически работать, если вы используете неправильное сравнение, но, вероятно, не по той причине, о которой вы думаете. В undefined
JavaScript нет ранее существовавшей переменной - это не какое-то волшебное ключевое слово, с которым можно сравнивать вещи. Вы можете создать переменную с именем undefined
и присвоить ей любое значение.
let undefined = 42;
И вот пример того, как вы можете использовать это, чтобы доказать, что первый метод неверен: