web-dev-qa-db-fra.com

Tester si quelque chose n'est pas indéfini en JavaScript

Je vérifie if(response[0].title !== undefined), mais j'obtiens l'erreur suivante:

Uncaught TypeError: Impossible de lire la propriété 'title' de non définie.

220
Raimonds

response[0] n'est pas défini, vérifiez s'il est défini, puis vérifiez le titre de sa propriété.

if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
    //Do something
}
342
amosrivera

Il suffit de vérifier si response[0] n'est pas défini:

if(response[0] !== undefined) { ... }

Si vous devez toujours vérifier explicitement le titre, faites-le après la vérification initiale:

if(response[0] !== undefined && response[0].title !== undefined){ ... }
37
Rion Williams

J'ai eu des problèmes avec tous les autres exemples de code ci-dessus. Sous Chrome, c'était la condition qui fonctionnait pour moi:

typeof possiblyUndefinedVariable !== "undefined"

Je vais devoir tester cela dans d'autres navigateurs et voir comment les choses se passent, je suppose.

34
Karl Henselin

En fait, vous devez l’entourer d’un bloc Try/Catch afin que votre code ne s’arrête pas de fonctionner. Comme ça:

try{
    if(typeof response[0].title !== 'undefined') {
        doSomething();
    }
  }catch(e){
    console.log('responde[0].title is undefined'); 
  }
12
André Luiz

type de:

var foo;
if (typeof foo == "undefined"){
  //do stuff
}

Ce sera parce que response[0] lui-même n'est pas défini.

1
DavidGouge

Vérifiez si condition == null; Ça va résoudre le problème

1
Tanmay Chandra

Vérifiez si vous êtes bien response[0] existe, l'erreur semble suggérer que ce n'est pas le cas.

0
Exelian

Vous devez d’abord vérifier si response[0] n’est pas défini et si ce n’est pas le cas, vérifiez le reste. Cela signifie que dans votre cas, response[0] n'est pas défini.

0
Alex Turpin

Je sais que j'y suis allé avec 7 mois de retard, mais j'ai trouvé ces questions et ça a l'air intéressant. J'ai essayé ceci sur la console de mon navigateur.

try{x,true}catch(e){false}

Si la variable x est indéfinie, une erreur est interceptée et elle sera fausse, sinon, elle retournera vrai. Vous pouvez donc utiliser la fonction eval pour définir la valeur sur une variable

var isxdefined = eval('try{x,true}catch(e){false}')
0
AngeLOL