2012-02-16 4 views
0

thevar [2] === 'debug'그러나 thevar [2]가 정의되지 않았는지 확인해야하므로 정의되지 않은 다음 코드를 실행했습니다. 자바 스크립트 오류가 발생합니다 :Javascript : 정의되지 않은 변수의 값을 확인하는 가장 좋은 방법

if (thevar[2] === 'debug') { 
    console.log('yes'); 
} 

그래서 나는 현재하고 있어요 무엇 :

if (typeof thevar[2] !== 'undefined') { 
    if (thevar[2] === 'debug') { 
     console.log('yes'); 
    } 
    } 

정말 이렇게하는 가장 좋은 방법이 있습니까?

+1

위도 : http://stackoverflow.com/a/416327 –

+0

thevar가 정의되지 않았고 thevar [2]가 아닌 것을 의미합니까? – Laurent

+0

@ AhmetKakıcı 그것은 나쁜 예입니다. 문제는이 질문과 같은 질문으로 바뀌었지만 답은 받아 들여지지 않습니다. 사실이 질문에서 실수를하는 것은 그 질문을보고 대답을 제외하면 쉽게 생길 수 있습니다. –

답변

1

첫 번째 예제와 약간의 var에 할당 트릭을 할. 객체의 정의되지 않은 속성은 undefined으로 평가되지만 오류를 발생시키지 않습니다.

var foo = {}; 
var nothing = foo.bar; // foo.bar is undefined, so "nothing" is undefined. 
// no errors. 

foo = []; 
nothing = foo[42]; // undefined again 
// still no errors 

두 번째 예는 필요하지 않습니다. 첫 번째로 충분합니다.

0

if (typeof thevar[2] !== 'undefined') ...을 실행할 수있는 경우 thevar을 참조 할 수 있으며 그 밖의 항목은 실행할 수 있습니다.

배열이 존재하면 그 값이 정의되지 않은 경우에도 값에 대한 검사가 정상적으로 작동합니다.

> var x = []; 
    undefined 
> if (x[0] === "debug") console.log("yes"); 
    undefined 
> if (x[100] === "debug") console.log("yes"); 
    undefined 

배열이 존재하지 않는 경우에만 문제가 발생합니다. 그래서 당신이 알고있는 한 thevar 값을 가지고 다음 확인이 필요합니다. 그렇지 않으면 단지 thevar 값이 있는지 확인하거나 오류가 발생하지 않습니다

var thevar = thevar || []; 
//work with thevar with impunity 
관련 문제