Je vérifie if(response[0].title !== undefined)
, mais je reçois l'erreur:
TypeError non capturé: impossible de lire la propriété 'title' de undefined.
Je vérifie if(response[0].title !== undefined)
, mais je reçois l'erreur:
TypeError non capturé: impossible de lire la propriété 'title' de undefined.
Réponses:
response[0]
n'est pas défini, vérifiez s'il est défini, puis vérifiez son titre de propriété.
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
n'est pas un mot-clé JavaScript (bien que tout le monde semble le croire). Si vous le souhaitez, vous pouvez créer une variable appelée undefined
et cette vérification sera incorrecte. La seule façon correcte est de vérifier (typeof myVar !== 'undefined')
.
undefined
?
Vérifiez simplement si ce 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){ ... }
J'ai eu des problèmes avec tous les autres exemples de code ci-dessus. Dans Chrome, c'était la condition qui fonctionnait pour moi:
typeof possiblyUndefinedVariable !== "undefined"
Je vais devoir tester cela dans d'autres navigateurs et voir comment ça se passe, je suppose.
undefined
devait être une chaîne.
En fait, vous devez l'entourer d'un bloc Try / Catch pour 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');
}
Type de:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
Ce sera parce que response[0]
lui-même n'est pas défini.
Vérifiez si condition == null
; Cela résoudra le problème
Vous devez d'abord vérifier si ce response[0]
n'est pas défini, et seulement si ce n'est pas le cas, vérifiez le reste. Cela signifie que dans votre cas, response[0]
n'est pas défini.
Je sais que je suis allé ici 7 mois en retard, mais j'ai trouvé ces questions et cela semble intéressant. J'ai essayé cela sur ma console de navigateur.
try{x,true}catch(e){false}
Si la variable x n'est pas définie, une erreur est interceptée et elle sera fausse, sinon, elle renverra true. Vous pouvez donc utiliser la fonction eval pour définir la valeur d'une variable
var isxdefined = eval('try{x,true}catch(e){false}')
Dans certaines de ces réponses, il y a un malentendu fondamental sur la façon d'utiliser typeof
.
Incorrect
if (typeof myVar === undefined) {
Correct
if (typeof myVar === 'undefined') {
La raison en est que typeof
renvoie une chaîne. Par conséquent, vous devez vérifier qu'il a renvoyé la chaîne "non définie" plutôt que undefined
(non placée entre guillemets), qui est elle-même l'un des types primitifs de JavaScript . L' typeof
opérateur ne renverra jamais une valeur de type undefined
.
Addenda
Votre code peut techniquement fonctionner si vous utilisez la comparaison incorrecte, mais probablement pas pour la raison que vous pensez. Il n'y a pas de undefined
variable préexistante en JavaScript - ce n'est pas une sorte de mot-clé magique auquel vous pouvez comparer les choses. Vous pouvez réellement créer une variable appelée undefined
et lui donner la valeur que vous souhaitez.
let undefined = 42;
Et voici un exemple de la façon dont vous pouvez utiliser cela pour prouver que la première méthode est incorrecte: