检查变量是否存在。 [奇怪的]

时间:2012-12-12 22:14:54

标签: javascript

我在这里遇到了一个奇怪的问题。

我正在尝试检查变量是否存在

我有

for(var i=0; i<6; i++{
  if(results[(i+1)].test){
    results[(i+1)].test=i + 'test';
  }
}

我知道结果(6).test未定义,我需要添加额外的索引来检查变量是否存在。我一直收到控制台错误说

Uncaught TypeError: Cannot read property 'test' of undefined   

我以为if(results[(i+1)].test)会检查变量是否存在于我身上

我也试过

if(typeof results[(i+1)].test !='undefined'){
 results[(i+1)].test=i + 'test'
}

但仍然收到错误。我该如何解决这个问题?

非常感谢!

4 个答案:

答案 0 :(得分:3)

您正在检查foo.test是否未定义,但您的问题是foo本身(在这种情况下为results[i + 1])未定义。

你需要先检查一下,例如:

if (typeof results[i+1] != "undefined") {
    // do stuff with results[i+1].test, or results[i+1].whatever
}

答案 1 :(得分:1)

在检查.test是否存在之前,您需要将结果(6)指定为对象。就像你说的那样,结果(6)是未定义的,这意味着当你试图调用结果(6).test时,你会得到你描述的错误。

答案 2 :(得分:1)

您没有检查结果数组的内容。

你应该这样做:

if(typeof results[(i+1)] !== 'undefined'){
 results[(i+1)].test=i + 'test'
}

答案 3 :(得分:1)

结果是[(i + 1)]吗?

if(results[(i+1)] && results[(i+1)].test){
  results[(i+1)].test=i + 'test';
}