Javascript 数组值未定义...我如何测试[重复]

问题描述 投票:0回答:7

我正在尝试测试 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;
}

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

javascript arrays undefined
7个回答
77
投票

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


16
投票

您正在检查数组索引是否包含字符串

"undefined"
,您应该使用
typeof
运算符:

typeof predQuery[preId] == 'undefined'

或者使用

undefined
全局属性:

predQuery[preId] === undefined

第一种方式是更安全,因为

undefined
全局属性是可写的,并且可以更改为任何其他值。


9
投票
predQuery[preId]=='undefined'

您正在针对 string

'undefined'
进行测试;您将此测试与返回字符串的
typeof
测试混淆了。您可能打算针对特殊值进行测试
undefined

predQuery[preId]===undefined

注意严格相等运算符以避免通常不需要的匹配

null==undefined

但是,您可以通过两种方式获取

undefined
值:要么
preId
不是
predQuery
的成员,或者它 的成员,但其值设置为特殊
undefined
值。通常,您只想检查它是否存在;在这种情况下,
in
运算符更合适:

!(preId in predQuery)

4
投票

还有更多(很多)方式去罗马:

干杯!

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


2
投票

检查

if (predQuery[preId] === undefined)

使用严格等于运算符。请参阅 比较运算符


2
投票

尝试:

typeof(predQuery[preId])=='undefined'

或者更一般地说:
typeof(yourArray[yourIndex])=='undefined'

您将“未定义”与未定义进行比较,这会返回 false =)


1
投票

这段代码运行得很好

function isUndefined(array, index) {
    return ((String(array[index]) == "undefined") ? "Yes" : "No");
}
© www.soinside.com 2019 - 2024. All rights reserved.