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.
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 .
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.
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)
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é!
Vérifier
if (predQuery[preId] === undefined)
utilisez le strict égal à l'opérateur. Voir les opérateurs de comparaison
, 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 =)
ce code fonctionne très bien
function isUndefined(array, index) {
return ((String(array[index]) == "undefined") ? "Yes" : "No");
}