Estou verificando if(response[0].title !== undefined)
, mas recebo o erro:
TypeError não capturado: não é possível ler a propriedade 'title' de undefined.
Estou verificando if(response[0].title !== undefined)
, mas recebo o erro:
TypeError não capturado: não é possível ler a propriedade 'title' de undefined.
Respostas:
response[0]
não está definido, verifique se está definido e, em seguida, verifique o título da propriedade.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
não é uma palavra-chave JavaScript (embora todos pareçam pensar que é). Se desejar, você pode criar uma variável chamada undefined
e essa verificação estará incorreta. A única maneira correta é verificar (typeof myVar !== 'undefined')
.
undefined
?
Basta verificar se response[0]
está indefinido:
if(response[0] !== undefined) { ... }
Se você ainda precisar verificar explicitamente o título, faça-o após a verificação inicial:
if(response[0] !== undefined && response[0].title !== undefined){ ... }
Eu tive problemas com todos os outros exemplos de código acima. No Chrome, essa foi a condição que funcionou para mim:
typeof possiblyUndefinedVariable !== "undefined"
Vou ter que testar isso em outros navegadores e ver como vão as coisas, suponho.
undefined
tinha que ser uma corda.
Na verdade, você deve cercá-lo com um bloco Try / Catch para que seu código não pare de funcionar. Como isso:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
tipo de:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Será porque response[0]
ele próprio é indefinido.
Você deve primeiro verificar se response[0]
está indefinido e, se não estiver, verificar o restante. Isso significa que, no seu caso, response[0]
é indefinido.
Sei que cheguei aqui sete meses atrasado, mas achei essas perguntas e parece interessante. Eu tentei isso no console do meu navegador.
try{x,true}catch(e){false}
Se a variável x for indefinida, o erro será detectado e será falso; caso contrário, retornará true. Então você pode usar a função eval para definir o valor para uma variável
var isxdefined = eval('try{x,true}catch(e){false}')
Em algumas dessas respostas, há um mal-entendido fundamental sobre como usar typeof
.
Incorreta
if (typeof myVar === undefined) {
Corrigir
if (typeof myVar === 'undefined') {
O motivo é que typeof
retorna uma string. Portanto, verifique se ela retornou a string "indefinida" em vez de undefined
(não entre aspas), que é um dos tipos primitivos do JavaScript . O typeof
operador nunca vai retornar um valor do tipo undefined
.
Termo aditivo
Seu código pode funcionar tecnicamente se você usar a comparação incorreta, mas provavelmente não pelo motivo que você pensa. Não há undefined
variável preexistente no JavaScript - não é um tipo de palavra-chave mágica com a qual você possa comparar. Na verdade, você pode criar uma variável chamada undefined
e atribuir qualquer valor que desejar.
let undefined = 42;
E aqui está um exemplo de como você pode usar isso para provar que o primeiro método está incorreto: