Javascript:检查可能未定义的变量值的最佳方法

时间:2012-02-16 07:34:33

标签: javascript

我需要检查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');
    }
  }

这真的是最好的方法吗?

2 个答案:

答案 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分配技巧
var thevar = thevar || [];
//work with thevar with impunity