web-dev-qa-db-fra.com

La valeur du tableau Javascript n'est pas définie ... comment puis-je tester pour cela

J'essaie de tester pour voir si une variable Javascript est indéfinie.

Vous verrez que je ne m'attends pas à ce que la valeur de predQuery [preId] soit "indéfinie" si je ne reçois pas d'alerte au préalable indiquant "c'est incroyable". Mais je le fais souvent, alors je suppose que ma déclaration

 predQuery[preId]=='undefined') 

ne correspond pas correctement aux éléments non définis.

if((predQuery.length < preId) || (predQuery[preId]=="") || (predQuery[preId]=='undefined')){
   alert("its unbelievable");
   alert(predQuery[preId]);
   queryPreds[variables] = preId;
   queryObjs[variables] = objId;
   predQuery[preId] = variables;
}
else {
    alert(predQuery[preId]);
   var predIndex = predQuery[preId];
   queryPreds[predIndex] = preId;
   queryObjs[predIndex] = objId;
}

Je peux ajouter plus de code si nécessaire.

27
Ankur

array[index] == 'undefined' compare le valeur de l'index du tableau à la chaîne "indéfinie".
Vous cherchez probablement typeof array[index] == 'undefined', qui compare le type.

60
deceze

Vous vérifiez que l'index du tableau contient une chaîne "undefined", vous devez soit utiliser l'opérateur typeof:

typeof predQuery[preId] == 'undefined'

Ou utilisez la propriété globale undefined:

predQuery[preId] === undefined

La première méthode est safer , car la propriété globale undefined est accessible en écriture et peut être modifiée en toute autre valeur.

12
CMS
predQuery[preId]=='undefined'

Vous testez avec la chaîne string 'undefined'; vous avez confondu ce test avec le test typeof qui renverrait une chaîne. Vous voulez probablement tester la valeur spéciale undefined:

predQuery[preId]===undefined

Notez l'opérateur à égalité stricte pour éviter la correspondance généralement indésirable null==undefined.

Cependant, vous pouvez obtenir une valeur undefined de deux manières: soit preId n'est pas un membre de predQuery, soit il est un membre mais sa valeur est définie sur la valeur spéciale undefined. Souvent, vous voulez seulement vérifier si c'est présent ou pas; dans ce cas, l'opérateur in est plus approprié:

!(preId in predQuery)
6
bobince

Il y a plus (beaucoup) de chemins à Rome:

//=>considering predQuery[preId] is undefined:
predQuery[preId] === undefined; //=> true
undefined === predQuery[preId] //=> true
predQuery[preId] || 'it\'s unbelievable!' //=> it's unbelievable
var isdef = predQuery[preId] ? predQuery[preId] : null //=> isdef = null

à votre santé!

4
KooiInc

Vérifier

if (predQuery[preId] === undefined)

Utilisez le strict égal à l'opérateur. Voir opérateurs de comparaison

2
rahul

essayez: typeof(predQuery[preId])=='undefined'
ou plus généralement: typeof(yourArray[yourIndex])=='undefined'
Vous comparez "indéfini" à indéfini, ce qui retourne false =)

2
Warty

Ce code fonctionne très bien

function isUndefined(array, index) {
    return ((String(array[index]) == "undefined") ? "Yes" : "No");
}
0