2012-12-12 3 views
0

여기에 이상한 문제가 있습니다. 나는 변수가변수가 있는지 확인하십시오. [이상한]

존재 만약 내가

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

나는 결과 (6) .test이 정의이고, 내가 변수가 존재하는지 확인하기 위해 여분의 인덱스를 추가 할 필요가 알을 확인하려고

. 나는 또한

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

을 시도
Uncaught TypeError: Cannot read property 'test' of undefined 

내가 변수가 나를

이있는 경우 if(results[(i+1)].test) 확인 것이라고 생각 말하는 콘솔 오류가 여전히 오류가 계속. 이 문제를 어떻게 해결할 수 있습니까?

고맙습니다.

+0

확인. 알았다. 나는 지금 방학이 필요하다는 것을 증명합니다. 모두에게 감사드립니다! – FlyingCat

+0

어쩌면 문제는 반복자가 배열에서 실제로 반복하지 않는다는 것입니다. 0에서 6까지 반복합니다. –

답변

3

foo.test가 정의되지 않았는지 확인하고 있지만 foo 자체 (이 경우 results[i + 1])는 정의되지 않았습니다.

당신은 당신이 (6) .test가있는 경우 확인하기 전에 객체로 결과를 할당 할 필요가

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

동일한 if, results (i + 1) && results [i에서 테스트를 수행 할 수 있습니다 +1]. 테스트)' – Snuffleupagus

1

: 먼저 예를 것을 확인해야합니다. 당신이 말한 것처럼 결과 (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'; 
} 
관련 문제