La valeur du tableau Javascript n'est pas définie ... ]

cette question a déjà une réponse ici:

j'essaie de tester pour voir si une variable Javascript n'est pas définie.

vous verrez que je ne m'attends pas à la valeur de predQuery[preId] pour être 'undefined' si je ne suis pas la première à obtenir une alerte disant "incroyable". Mais je le fais souvent, donc je devine que ma déclaration

 predQuery[preId]=='undefined') 

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

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.

25
demandé sur Sonny Chivas 2010-04-20 10:50:48

7 réponses

array[index] == 'undefined' compare la valeur de l'index du tableau à la chaîne de caractères "undefined".

Vous cherchez probablement typeof array[index] == 'undefined' , qui compare le type .

59
répondu deceze 2010-04-20 06:55:28

vous le vérifiez l'index du tableau contient une chaîne de caractères "undefined" , vous devriez utiliser l'opérateur typeof :

typeof predQuery[preId] == 'undefined'

Ou utilisez le undefined mondiale de la propriété:

predQuery[preId] === undefined

la première voie est plus sûr , parce que la propriété undefined globale est inscriptible, et il peut être changé à n'importe quelle autre valeur.

11
répondu CMS 2010-04-20 06:56:18
predQuery[preId]=='undefined'

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

predQuery[preId]===undefined

Note la stricte égalité de l'opérateur pour éviter le général-non désirés match null==undefined .

cependant, il y a deux façons d'obtenir une valeur undefined : preId n'est pas un membre de predQuery , ou est un membre, mais a une valeur fixée à la valeur spéciale undefined . Souvent, vous voulez seulement vérifier s'il est présent ou non; dans ce cas, l'opérateur in est plus approprié:

!(preId in predQuery)
6
répondu bobince 2010-04-20 07:44:39

il y a plus (beaucoup) de façons de 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

santé!

4
répondu KooiInc 2010-04-20 07:22:08

Vérifier

if (predQuery[preId] === undefined)

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

2
répondu rahul 2010-04-20 06:55:12

, essayez: typeof(predQuery[preId])=='undefined'

ou plus généralement: typeof(yourArray[yourIndex])=='undefined'

Vous êtes à la comparaison "non défini" non défini, qui retourne false =)

2
répondu Warty 2010-04-20 06:56:16

ce code fonctionne très bien

function isUndefined(array, index) {
    return ((String(array[index]) == "undefined") ? "Yes" : "No");
}
0
répondu Bernardo Ravazzoni 2016-03-06 15:28:47