0

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

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

我有

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

我知道 results(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

4 回答 4

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
}
于 2012-12-12T22:16:54.870 回答
1

您需要先将 results(6) 指定为对象,然后才能检查 .test 是否存在。就像你说的 results(6) 是未定义的,这意味着当你尝试调用 results(6).test 时,你会得到你描述的错误。

于 2012-12-12T22:17:38.397 回答
1

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

你应该做这个:

if(typeof results[(i+1)] !== 'undefined'){
 results[(i+1)].test=i + 'test'
}
于 2012-12-12T22:18:31.233 回答
1

结果[(i+1)] 定义了吗?

if(results[(i+1)] && results[(i+1)].test){
  results[(i+1)].test=i + 'test';
}
于 2012-12-12T22:18:43.590 回答