我在这里遇到了一个奇怪的问题。
我正在尝试检查变量是否存在
我有
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'
}
但仍然收到错误。我该如何解决这个问题?
非常感谢!
答案 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';
}