Я перевіряю if(response[0].title !== undefined)
, але я отримую помилку:
Uncaught TypeError: Неможливо прочитати властивість "title" невизначеного.
Я перевіряю if(response[0].title !== undefined)
, але я отримую помилку:
Uncaught TypeError: Неможливо прочитати властивість "title" невизначеного.
Відповіді:
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 не визначена, помилка вловлюється, і вона буде помилковою, якщо ні, вона поверне справжню. Таким чином, ви можете використовувати функцію 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;
Ось приклад того, як ви можете використовувати це, щоб довести, що перший метод є невірним: