Javascript数组值未定义...我该如何测试

时间:2010-04-20 06:50:49

标签: javascript arrays undefined

我正在尝试测试是否未定义Javascript变量。

如果我没有首先收到“令人难以置信”的警报,你会发现我并不认为predQuery [preId]的价值是'未定义的'。但我经常这样做,所以我猜我的陈述

 predQuery[preId]=='undefined') 

未正确匹配未定义的元素。

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;
}

如果需要,我可以添加更多代码。

7 个答案:

答案 0 :(得分:62)

array[index] == 'undefined'将数组索引的与字符串“undefined”进行比较。
您可能正在寻找typeof array[index] == 'undefined',它会比较类型

答案 1 :(得分:12)

您正在检查数组索引是否包含字符串"undefined",您应该使用typeof运算符:

typeof predQuery[preId] == 'undefined'

或使用undefined全局属性:

predQuery[preId] === undefined

第一种方法是更安全,因为undefined全局属性是可写的,并且可以更改为任何其他值。

答案 2 :(得分:6)

predQuery[preId]=='undefined'

您正在测试字符串 'undefined';你把这个测试与typeof测试混淆了,这个测试会返回一个字符串。您可能意味着要针对特殊值undefined进行测试:

predQuery[preId]===undefined

请注意strict-equality运算符,以避免通常不需要的匹配null==undefined

但是,有两种方法可以获得undefined值:preId不是predQuery的成员,或者成员但具有设置为特殊undefined值的值。通常,您只想检查它是否存在;在这种情况下,in运算符更合适:

!(preId in predQuery)

答案 3 :(得分:4)

罗马有更多(多种)方式:

//=>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

喝彩!

答案 4 :(得分:2)

检查

if (predQuery[preId] === undefined)

使用严格等于运算符。请参阅 comparison operators

答案 5 :(得分:2)

尝试:typeof(predQuery[preId])=='undefined'
或更一般地说:typeof(yourArray[yourIndex])=='undefined'
您将“undefined”与undefined进行比较,返回false =)

答案 6 :(得分:0)

此代码效果很好

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