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.
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.
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.
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)
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é!
Vérifier
if (predQuery[preId] === undefined)
Utilisez le strict égal à l'opérateur. Voir opérateurs de comparaison
essayez: typeof(predQuery[preId])=='undefined'
ou plus généralement: typeof(yourArray[yourIndex])=='undefined'
Vous comparez "indéfini" à indéfini, ce qui retourne false =)
Ce code fonctionne très bien
function isUndefined(array, index) {
return ((String(array[index]) == "undefined") ? "Yes" : "No");
}