我需要检查var [2] ==='debug'但是thevar [2]可能是未定义的,所以如果我运行以下代码并且未定义javascript会引发错误:
if (thevar[2] === 'debug') {
console.log('yes');
}
所以我现在正在做的是:
if (typeof thevar[2] !== 'undefined') {
if (thevar[2] === 'debug') {
console.log('yes');
}
}
这真的是最好的方法吗?
答案 0 :(得分:1)
您的第一个示例不会引发错误。对象的未定义属性评估为undefined
,但它们不会抛出错误。
var foo = {};
var nothing = foo.bar; // foo.bar is undefined, so "nothing" is undefined.
// no errors.
foo = [];
nothing = foo[42]; // undefined again
// still no errors
所以,不需要你的第二个例子。第一个就足够了。
答案 1 :(得分:0)
如果您可以运行if (typeof thevar[2] !== 'undefined') ...
,那么您可以参考thevar
,然后您可以使用它运行任何其他内容。
如果你的数组存在,那么检查一个值就可以正常工作,即使该值是未定义的。
> var x = [];
undefined
> if ( x[0] === "debug" ) console.log("yes");
undefined
> if ( x[100] === "debug" ) console.log("yes");
undefined
仅当阵列尚不存在时才会出现此问题。因此,只要您知道thevar
具有价值,那么就不需要检查。否则,只需检查thevar
是否有值,或做一些像
var thevar = thevar || [];
//work with thevar with impunity