2012-12-12 159 views
0

我在這裏有一個奇怪的問題。檢查變量是否存在。 [奇怪]

我想檢查變量存在

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

我知道結果(6)。測試是不確定的,我需要添加額外的指標,以檢查是否存在變數。我不斷收到控制檯錯誤說

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

好的。我知道了。我只是證明我現在需要休息一下。謝謝大家! – FlyingCat

+0

也許問題是你的迭代器實際上並沒有在你的數組中迭代:它迭代從0到6 –

回答

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 
} 
+2

請注意,你可以在同一個if'result(i [1 + 1] && results [i 1]。測試)' – Snuffleupagus

1

您需要分配結果(6)以纔可以檢查是否存在。試驗的對象。就像你說的結果(6)是不確定的,這意味着當你嘗試調用結果(6).test時,你會得到你描述的錯誤。

1

您沒有檢查結果數組的內容。

你應該這樣做:

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

的結果[第(i + 1)]定義的?

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