我正在尝试测试是否未定义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;
}
如果需要,我可以添加更多代码。
答案 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)
答案 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");
}