我正在尝试测试 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;
}
如果需要,我可以添加更多代码。
array[index] == 'undefined'
将数组索引的 value 与字符串“undefined”进行比较。typeof array[index] == 'undefined'
,它比较 type。
您正在检查数组索引是否包含字符串
"undefined"
,您应该使用typeof
运算符:
typeof predQuery[preId] == 'undefined'
或者使用
undefined
全局属性:
predQuery[preId] === undefined
第一种方式是更安全,因为
undefined
全局属性是可写的,并且可以更改为任何其他值。
predQuery[preId]=='undefined'
您正在针对 string
'undefined'
进行测试;您将此测试与返回字符串的 typeof
测试混淆了。您可能打算针对特殊值进行测试undefined
:
predQuery[preId]===undefined
注意严格相等运算符以避免通常不需要的匹配
null==undefined
。
但是,您可以通过两种方式获取
undefined
值:要么 preId
不是 predQuery
的成员,或者它 是 的成员,但其值设置为特殊 undefined
值。通常,您只想检查它是否存在;在这种情况下, in
运算符更合适:
!(preId in predQuery)
还有更多(很多)方式去罗马:
干杯!
const predQuery = {iExist: `hello world!`};
const preId = 'I-do-no-exist', exists = `iExist`;
console.log(predQuery[exists]); //=> hello world
console.log(predQuery[exists] === undefined); //=> false
console.log(predQuery[preId] === undefined); //=> true
console.log(undefined === predQuery[preId]) //=> true
console.log(predQuery[preId] || 'it\'s unbelievable!') //=> it's unbelievable
console.log(preId in predQuery); //=> false
console.log(exists in predQuery); //=> true
let isdef = predQuery[preId] ? predQuery[preId] : null;
console.log(isdef); //=> isdef? null
isdef = predQuery[preId] ?? `${preId} not in predQuery`;
console.log(isdef); //=> I-do-no-exist not in predQuery
.as-console-wrapper {
max-height: 100% !important;
}
尝试:
typeof(predQuery[preId])=='undefined'
typeof(yourArray[yourIndex])=='undefined'
这段代码运行得很好
function isUndefined(array, index) {
return ((String(array[index]) == "undefined") ? "Yes" : "No");
}